0%

spring自动注入为null

文章字数:286,阅读全文大约需要1分钟

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

分析

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

解决

1
2
3
4
5
6
7
8
9
10
11
12
13
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

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

其它

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