是否可以使用PropertyPlaceholderConfigurer
更新属性applicationContext.html
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="false"></property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations" value="classpath:config.properties" />
</bean>
<bean id="appConfig" class="com.abc.Configuration">
<property name="myProperty" value="${config.request.myProperty}" />
</bean>
Configuration.java
@Configuration
@Component
public class ServerConfig {
private int myProperty;
public int getMyProperty(){return myProperty;}
public int setMyProperty(int value){this.myProperty = value }
}
config.properties
myProperty=123456
我可以使用getMyproperty()获取“myProperty”值。但我无法使用setMyProperty()更新属性 - 配置文件未更新,因此如果重新启动应用程序,新值将丢失。
非常感谢任何帮助。
答案 0 :(得分:2)
更新此类属性将无效。您需要直接访问配置文件并将更改写入其中。问题是PropertyPlaceholderConfigurer可能会读取不同类型的源(在您的情况下是类路径资源)。其中一些可能是只读的。
另请注意,如果您进行更改,该事件将不会自动获取。你必须刷新春天的背景。或者您可以使用一些专用配置库(例如cfg4j)