java 什么是注入_【Java】@Autowired到底是在什么时候注入的?
@Autowired到底是在什么时候注入的?这是我在shiro配置的时候发现的问题。在我的项目中我有个shiro配置类shiroRealm是以内部类得方式写在配置类里面的,然后这个realm里面依赖注入了一个service。然后我在这个配置类下面,将这个shirorelam以@Bean的方式加入到容器中。然后我在运行的时候打了个断点,发现此时realm中的service是空,说明加入到容器中的re
·
@Autowired到底是在什么时候注入的?
这是我在shiro配置的时候发现的问题。
在我的项目中我有个shiro配置类
shiroRealm是以内部类得方式写在配置类里面的,然后这个realm里面依赖注入了一个service。
然后我在这个配置类下面,将这个shirorelam以@Bean的方式加入到容器中。
然后我在运行的时候打了个断点,发现此时realm中的service是空,说明加入到容器中的realm的成员变量realm是空,service没有注入进去。
但是我项目跑起来后,认证的时候发现service又有了,这是怎么回事,@Autowired到底是在什么时候注入的?求大神解答。
回答
容器启动后spring加载类的时候注入的
构造函数调用 先于 字段注入,所以你断点打在构造函数中间的时候自然是还没有注入的
@Autowired 注解的注入是通过类 AutowiredAnnotationBeanPostProcessor 实现的,是在 bean 实例化后处理的动作,你打断点的那个地方 shiroRealm 还是你自己构造出来的,还没有交给 spring 容器管理
看不看随你咯,我帮你找到了,反正我是没看完0-0
更多推荐
已为社区贡献1条内容
所有评论(0)