开发者社区> 问答> 正文

spring 在构造方法中调用注入对象为空

我在搭建项目的时候想直接在构造方法中调用注入进来的bean ,但是引用的对象是空?这是为什么呢?难道ioc注入的时候注入的先后顺序不同导致的?

下面贴出我的代码:

@Component
public class ShiroManager extends DefaultWebSecurityManager {
     
    @Autowired
    private LoginRealm loginRealm;
    @Autowired
    private ShiroSessionManager shiroSessionManager;
     
    /**
     *  添加缓存,和验证机制支持
     */
    public ShiroManager() {
        super();
        /**缓存器**/
//      EhCacheManager cacheManager = new EhCacheManager(); 
//      cacheManager.setCacheManagerConfigFile("classpath:/ehcache-shiro.xml");
//      this.setCacheManager(cacheManager);
        /**认证中心**/
        this.setRealm(loginRealm);
        /**session管理器**/
        this.setSessionManager(shiroSessionManager);
//      this.setRememberMeManager(rememberMeManager);
    }
}
@Component("loginRealm")
public class LoginRealm extends AuthorizingRealm {
     
    @Autowired
    private UserService userService;
 
    /**
这里注入的LoginRealm为空!

展开
收起
a123456678 2016-03-18 16:01:24 4904 0
2 条回答
写回答
取消 提交回答
  • 试下这样是否能满足你的需求。
    @Component
    public class ShiroManager extends DefaultWebSecurityManager {

    @Autowired
    private LoginRealm loginRealm;
    @Autowired
    private ShiroSessionManager shiroSessionManager;
    
    /**
     *  添加缓存,和验证机制支持
     */
    public ShiroManager() {
        super();
    }
    
    @PostConstruct
    private void init(){
        /**缓存器**/

    // EhCacheManager cacheManager = new EhCacheManager();
    // cacheManager.setCacheManagerConfigFile("classpath:/ehcache-shiro.xml");
    // this.setCacheManager(cacheManager);

        /**认证中心**/
        this.setRealm(loginRealm);
        /**session管理器**/
        this.setSessionManager(shiroSessionManager);

    // this.setRememberMeManager(rememberMeManager);

    }

    }

    2019-07-17 19:06:55
    赞同 展开评论 打赏
  • bean的构造函数肯定在属性组装之前调用啊。你可以声明InitializingBean然后在afterProperties里完成初始化

    2019-07-17 19:06:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载