关于shiro自定义realm无法注入bean的问题

      今天因为业务需要,需要自定义多个realm(自行百度),当我把代码写好之后,发现在realm中@Autowire注入的bean都是null

在网上也百度了很久,各种解决方案,都没有效果,最后发现原来是

 @Bean(name = "lifecycleBeanPostProcessor")
 public static  LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
     return new LifecycleBeanPostProcessor();
 }

当你的代码添加了上面的,这个代码的具体作用不做详细解释,可百度,大概就是

LifecycleBeanPostProcessor将Initializable和Destroyable的实现类统一在其内部,自动分别调用了Initializable.init()和Destroyable.destroy()方法,从而达到管理shiro bean生命周期的目的。

同时呢,当relam在spring中被解析为filter,bean实例化会在filter之后,所以注入失败,大概是这个原因, 具体我也不清楚,有大神了解的可以留言告诉小弟。

废话不多说,说解决办法,上图

将LifecycleBeanPostProcessor提出来,单独作为一个配置类,然后在shiroConfig中修改为如下代码

同时别忘了将下面的代码注释了

/* @Bean(name = "lifecycleBeanPostProcessor")
 public static  LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
     return new LifecycleBeanPostProcessor();
 }*/

这样就完成了,但是具体到底什么原因,我也不清楚,希望大神告知。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值