我已经在Spring MVC项目中对此进行了初始化,但是BASE_URL始终为空。在其他三台服务器上,它也可以正常工作。此类和静态变量的初始化有什么问题吗?
BaseClass.java
public final String BASE_URL = SystemConfiguration.restHost;
SystemConfiguration.java
public static String restHost;
public void setRestHost(String restHost) {
SystemConfiguration.restHost = restHost;
}
applicationContext.xml
<property name="RestHost">
<value>${restHost:https://example.com}</value>
</property>
最佳答案
毕竟这是Java。静态字段在其所属的类被加载和初始化时被初始化。
如果在应用程序加载应用程序上下文并从BaseClass
bean设置字段之前加载了SystemConfiguration
,则BASE_URL
将被初始化为null
,因为SystemConfiguration.restHost
在默认情况下也是null
。
您应该真正考虑更改设计。没有理由要有任何static
字段。 Spring可以将所有配置值作为bean或bean值处理。