扩展Spring Security-国际化终极配制

本文解决了一个关于Acegi国际化配置的问题,介绍了如何使用自定义的LocaleAwareAcegiMessageSource替代默认的AcegiMessageSource以支持classpath相对路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       看标题相信有些同学一定暗自在想,国际化啊,不就是那个i18n嘛,简单啊,查查Acegi的文档配置下就好了呀。再说Acegi又是基于Spring实现的,很方便的啊。

 

 

       开始是这么想的,老生常谈了,一个国际化有啥可怕,但是看过文档后配制就被误导了,文档上对此也是聊聊几句带过,但问题就严重了,因为被他误导所以使用了ReloadableResourceBundleMessageSource在Acegi中配置了下,但重启后发现,faint【微弱的,无力的,模糊的】,一点效果也没有,这下郁闷了,于是尝试了无数中Spring配制一一无功而返。

 

 

       只能上网看看有没有可怜的小盆友和我遇到一样的问题,终于在Spring的官方论坛上发现了个老外也遇到了这个问题,上面七嘴八舌,有人提到用Acegi的AcegiMessageSource代替ReloadableResourceBundleMessageSource配制,使用了Acegi的jar包中messages文件路径"org/acegisecurity/AcegiMessageSource" 配置后,果然有效,但此方式无法使用classpath标识相对路径,郁闷,翻出AcegiMessageSource类的源码,终于明白为何了,原来AcegiMessageSource继承的是Spring的ResourceBundleMessageSource,而ResourceBundleMessageSource不支持classpath,所以写了个LocaleAwareAcegiMessageSource来替代原有的类以支持classpath相对路径,至此问题解决。

 

 

 

       向Eclipse工程中导入所需的第三方jar包,可以有好几种方式,一般情况下,我们在项目根目录下建立/lib文件夹,将所有用到的lib包拷贝到该目录下,然后在Eclipse中通过添加jar功能按钮来进行。

 

       这里要说的是另外一种方式,通过添加classpath变量来添加jar包。因为在很多开源项目中,下载器源码后通过ant或者maven等构建工具编译工程之后,它所依赖的jar文件都是通过这种方式进行的。

具体做法如下:window->preferences->Java->Build path->Classpath Variables

在右边点击New按钮,设定变量名称,然后指定该变量所指向的目录,完成既可。

这样已经设定好了类路径变量,然后在需要使用该路径的工程上,通过工程的Properties对话框中的Java Buildpath来添加该变量,添加之后的变量并没有指向某个特定的jar包,需要Edit该变量,使用Extension按钮来添加具体依赖的jar包

 

java代码

 

 

 

xml配置

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值