欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring boot集成shiro,配置ShiroConfig类相关继承org.apache.shiro.spring.web的类@Autowired无法注入问题

程序员文章站 2022-06-14 22:13:49
这个问题真的折磨我很久,在网上找了很多方法都解决不了幸好看见了这一篇https://www.cnblogs.com/matd/p/11128179.html...

这个问题真的折磨我很久,在网上找了很多方法都解决不了

重新写了几个shiro相关的拦截器,也添加了@Component注解,按理说spring boot启动是bean应该会被注册到容器,可偏偏报空指针异常,开始我以为是没有扫描到,又在启动类添加@ComponentScan扫描真个包路径,还是为null,我还以为是spring boot启动时没有出示化那几个过滤器,但我测试了其他加了@Component的类是有被实例化的。

spring boot集成shiro,配置ShiroConfig类相关继承org.apache.shiro.spring.web的类@Autowired无法注入问题
幸好看见了这一篇https://www.cnblogs.com/matd/p/11128179.html,我是把Shiro生命周期处理器也写在了ShiroConfig配置类。

//Shiro生命周期处理器 @Bean("lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor injectBeanPostProcessor(){ return new LifecycleBeanPostProcessor(); } 

如果这个配置出现在类中,那么该类的autowired都会失效。解决办法:那就分开来写!!!

shiro生命周期配置类
spring boot集成shiro,配置ShiroConfig类相关继承org.apache.shiro.spring.web的类@Autowired无法注入问题
shiro主配置类,加上@AutoConfigureAfter(AppConfig.class)
spring boot集成shiro,配置ShiroConfig类相关继承org.apache.shiro.spring.web的类@Autowired无法注入问题
关于这个类的描述

1.LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调,在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调。如UserRealm就实现了Initializable,而DefaultSecurityManager实现了Destroyable。具体可以查看它们的继承关系。
2.保证实现了Shiro内部lifecycle函数的bean执行

本文地址:https://blog.csdn.net/qq_43411729/article/details/108854627