java 什么是注入_【Java】@Autowired到底是在什么时候注入的?

@Autowired到底是在什么时候注入的?

这是我在shiro配置的时候发现的问题。

在我的项目中我有个shiro配置类

shiroRealm是以内部类得方式写在配置类里面的,然后这个realm里面依赖注入了一个service。

c38a74affc14d479ee8a945d0a628c65.png

然后我在这个配置类下面,将这个shirorelam以@Bean的方式加入到容器中。

16e03ed19ea99dcc2387cee6891ba02f.png

然后我在运行的时候打了个断点,发现此时realm中的service是空,说明加入到容器中的realm的成员变量realm是空,service没有注入进去。

fa959ecdb8f8551647845f3e3499c799.png

但是我项目跑起来后,认证的时候发现service又有了,这是怎么回事,@Autowired到底是在什么时候注入的?求大神解答。

5ba42bba3fa1e15d29df2b672f610e8a.png

回答

容器启动后spring加载类的时候注入的

构造函数调用 先于 字段注入,所以你断点打在构造函数中间的时候自然是还没有注入的

@Autowired 注解的注入是通过类 AutowiredAnnotationBeanPostProcessor 实现的,是在 bean 实例化后处理的动作,你打断点的那个地方 shiroRealm 还是你自己构造出来的,还没有交给 spring 容器管理

看不看随你咯,我帮你找到了,反正我是没看完0-0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值