【工作问题】SpringContextUtils.getBean和@Autowired的问题
程序员文章站
2022-07-12 08:38:44
...
今天写了一个类实现的是UncaughtExceptionHandler接口,用于捕获未处理的异常,然后将报错信息存入数据库。
@Autowired
ExceptionMsgService exceptionMsgService;//null
ExceptionMsgService exceptionMsgService = SpringContextUtils.getBean(ExceptionMsgService.class);
该类使用@Autowired注解自动装配service,但一直不能装配,service为空。之后改用SpringContextUtils.getBean(serivice.class)装配成功,那么为什么@Autowired不成功呢?
@Autowired默认按类型装配(byType),为null说明没有找到,那为什么会没有找到呢。。。
后来想了一下,情况可能是这样的。
这个类是静态单列模式的,类加载的时候就会new一个全局唯一的实例出来,而new出来的实例不再被Spring容器管理。也就是说Spring如果new了实例就应该手动赋值。。。
上一篇: 20. 有效的括号(java)