spring boot如何给静态变量注入配置
如果你曾经试过如下的一段代码
@Value("${database.driver}")
private static String driver;
如果程序鲁棒性不好,你便会得到一个NullPointerException
反正是不能达到你想要的目的,给静态变量赋值。
解决方案
- 用一个非静态的变量当中介,像这样
然后在构造函数中将_driver赋给driver即可@Value("${database.driver}") private String _driver; private static String driver;
- 写一个
non-static
的set方法,像酱紫public class BaseDao{ private static String driver; @Autowired public void setDriver(@Value("${database.driver}") String driver) { BaseDao.driver = driver; } }
注意事项
- set方法一定是non-static的
- 一定要小心加载顺序,static代码块不要随便写,不然又是
NullPointerException