java 静态代码块和spring @value等注解注入顺序
java 静态代码块和spring @value等注解注入顺序 问题所在 先上代码 java方法 @Value("${mf.cashost}") public static String casHost; public static String getCasHost() { if (StringUtils.isEmpty(casHost)) { //casHost = "http://sso.abc.com.cn/sso/"; casHost = "http://ssotest.abc.com.cn/sso/"; } return casHost; } 配置文件 mf.cashost=http://sso.abc.com.cn/sso/ 正常我们想要的 getCasHost 的值,肯定是 sso.abc.com.cn ,而不是 ssotest ,但是如果调用 getCasHost 肯定是返回 test 的, 或者说,casHost最开始进到getCasHost的方法时,就是空的。 分析一波 关于实例变量与构造方法的初始化顺序问题 Java类会先执行构造方法,然后再给注解了@Value 的属性注入值,所以在执行静态代码块的时候,就会为null。 Java 及Spring 初始化顺序:java静态属性/静态代码块(根据声明的先后顺序加载)、构造代码块、 构造方法(即