今天试着在spring中使用工具类,结果idea报了个java.lang.NullPointerException。
然后翻到了这篇博客解决了疑惑,在此给出原文链接:https://blog.csdn.net/rongxiang111/article/details/78881371
Spring中不能使用@Autowired给static变量注入值
在springframework中,如果你用@Autowired去注入一个静态变量,像这样:
@Autowired
private static DataSource ds;
那么就会出现如下错误:
原因
静态变量不是对象的属性,而是类的属性(所有对象共用一个静态变量),spring则是基于对象层面上的依赖注入。即,spring注入不了比对象属性范围更大的类属性,注入不了那static中的数据不就为null了呗。
解决
利用非静态setter方法注入静态变量。如下:
@Autowired
private static DataSource DS;
/**
* 功能: 利用非静态setter方法注入静态变量
* @param: DS 数据源
* @author zhi
* @date 17:02 2019/10/30
*/
public void setDS(DataSource ds) {
DS = ds;
}