美文网首页
解决Spring boot整合shiro无法获取yml自定义属性

解决Spring boot整合shiro无法获取yml自定义属性

作者: sdevil507 | 来源:发表于2022-05-30 11:52 被阅读0次

    背景

    最近使用SpringBoot整合shrio时,针对于一些配置,例如:超时、密码重试次数等配置,需要单独配置在yml中,方便部署时变更。

    但是却遇到获取不到yml中自定义属性问题,一直显示null。

    经过测试发现在配置了LifecycleBeanPostProcessorBean的时候,shiro的配置总是优先于spring boot获取yml步骤前,因此shiro中如果有用到yml中的配置,一直是获取不到的。

    解决方法

    LifecycleBeanPostProcessor作用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调,在实现了Destroyable接口的 Shiro bean 销毁时调用 Destroyable接口回调。

    https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core中有一个解释如下:

    image.png image.png

    LifecycleBeanPostProcessorBeanPostProcessor的子类,参照上面的说法,应该将其设置为static方法获取Bean。
    这样不会触发配置类的初始化,如果配置类过早初始化,则@Autowired与@Value会无效!

    因此解决办法就是将获取LifecycleBeanPostProcessor这个bean的方法设置为static!
    接下来,就可以正常的在@Configuration类中使用@Autowired注解了。
    自定义yml属性顺利注入!

    image.png

    相关文章

      网友评论

          本文标题:解决Spring boot整合shiro无法获取yml自定义属性

          本文链接:https://www.haomeiwen.com/subject/tudoprtx.html