spring自动注入为null

写了一个工具类,并且使用Spring注入了一个Service但是使用的时候返回null

分析

  1. 如果是找不到类应该在启动的时候报错,但是知道运行时才报空指针(@Autowired默认required = true)
  2. spring是在启动的时候扫描文件,将相应注解的bean保存,然后再统一注入
  3. 我的工具类是使用反射生成的实例,所以新的实例中没有注入的bean

解决

public class BeanFactoryTest implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext=applicationContext;
    }

    public ApplicationContext getApplicationContext() {
        return applicationContext;
    }
}

手动获取bean

BlogService blogService=beanFactoryTest.getApplicationContext().getBean(BlogService.class);

其它

使用注入的类如果不是spring管理的注入也没有效果,即只有在bean中才能使用bean

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容