Spring Config属性未在某个服务器上填充

时间:2014-01-30 17:42:32

标签: java spring spring-mvc static

我在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>

2 个答案:

答案 0 :(得分:3)

毕竟这是Java。静态字段在它们所属的类被加载和初始化时被初始化。

如果在您的应用程序加载应用程序上下文并从BaseClass bean设置字段之前加载SystemConfiguration,则BASE_URL将从null初始化为SystemConfiguration.restHost 1}}默认情况下也是null

你应该考虑改变你的设计。没有理由拥有任何static字段。 Spring可以将所有配置值作为bean或bean值处理。

答案 1 :(得分:0)

发现它与分配给最终变量的静态变量有关。我们刚刚在代码中直接引用SystemConfiguration.restHost,一切正常。我假设春季bean在这个服务器上以不同的顺序加载,然后其他工作正常。