发现问题
对于工具类,一般我们提供的方法均为static类方法,通过类直接调用,方便快捷。于是,在某static方法内,使用@Autowired注入的对象
@Autowired
static DictService service;
结果不出意外的,NullPointerException,显然@Autowired注入失败。
分析问题
Autowired annotation is not supported on static fields: static ...
Autowired 不支持标注在static属性上!为什么呢 链接
解决问题
那如何在工具类中使用@Autowired 属性呢?可参考以下方式:
private static DictService dictService;
@Autowired
private DictService service;
@PostConstruct
public void init(){
dictService = this.service;
}
通过@PostConstruct初始化static属性dictService,便可以在static方法上使用dictService了。
注意:工具类上注解@Component.