zoukankan      html  css  js  c++  java
  • 解决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有关。

  • 相关阅读:
    Numpy数据处理函数
    数据库-创建表
    描述统计学:表格法和图形法
    最短路 || POJ 1511 Invitation Cards
    搜索 || DFS || UOJ 146 信息传递
    最短路 || UOJ 19 寻找道路
    最短路 || POJ 1847 Tram
    博弈论
    筛选法 || POJ 3292 Semi-prime H-numbers
    团队第一次作业
  • 原文地址:https://www.cnblogs.com/matd/p/11128179.html
Copyright © 2011-2022 走看看