• 解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题


    如题,最近使用spring boot集成shiro,在shiroFilter要使用数据库动态给URL赋权限的时候,发现

    @Autowired

    注入的bean都是null,无法注入mapper。搜了半天似乎网上都没有相关问题,也是奇怪。最后发现

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

    如果这个配置出现在类中,那么该类的autowired都会失效,解决办法:分离这个配置就好了

    @Configuration
    public class ShiroLifecycleBeanPostProcessorConfig {
    
        /**
         * Shiro生命周期处理器
         *
         * @return
         */
        @Bean(name = "lifecycleBeanPostProcessor")
        public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
            return new LifecycleBeanPostProcessor();
        }
    
    }

    shiro主配置

    @Configuration
    @AutoConfigureAfter(ShiroLifecycleBeanPostProcessorConfig.class)
    public class ShiroConfig {
     ...
    }

    关于这个类的描述

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

    2.保证实现了Shiro内部lifecycle函数的bean执行

    看得不是很懂,应该是和shiro内部bean注入和AOP有关。

  • 相关阅读:
    定位小结
    定位知识点
    css属性书写顺序
    清除浮动及清除浮动的方法
    margin合并和塌陷问题
    css特性-层叠性,继承性,优先级
    css属性简写
    css布局之双飞翼布局
    css布局之圣杯布局
    css布局之等高布局
  • 原文地址:https://www.cnblogs.com/matd/p/11128179.html
Copyright © 2020-2023  润新知