我已经在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值处理。

08-27 09:40