Spring能否使用@Autowired给static变量注入值

今天试着在spring中使用工具类,结果idea报了个java.lang.NullPointerException。
然后翻到了这篇博客解决了疑惑,在此给出原文链接:https://blog.csdn.net/rongxiang111/article/details/78881371



Spring中不能使用@Autowired给static变量注入值

在springframework中,如果你用@Autowired去注入一个静态变量,像这样:

    @Autowired
    private static DataSource ds;

那么就会出现如下错误:
Snipaste_2019-10-30_16-02-49.png

原因

静态变量不是对象的属性,而是类的属性(所有对象共用一个静态变量),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;
    }
发布了10 篇原创文章 · 获赞 13 · 访问量 429

猜你喜欢

转载自blog.csdn.net/hufuzhi1146231094/article/details/103083860