デフォルト値を使用してコンテキストからマップパラメータを取得し、システムプロパティを初期化するBeanを作成できます。
<bean class="test.B1">
<constructor-arg>
<map>
<entry key="p1" value="v1" />
<entry key="p2" value="v2" />
....
</map>
</constructor-arg>
</bean>
。
public B1(Map<String, String> defaultProperties) {
for (Map.Entry<String, String> e : defaultProperties.entrySet()) {
if (System.getProperty(e.getKey()) == null) {
System.setProperty(e.getKey()
, e.getValue());
}
}
}
コンテキストでのB1定義は、#{systemProperties.myProperty}
プロパティが最初に初期化されるように、使用するBeanの前にある必要があります
アップデート
これは、システムプロパティのオーバーライドに関するものでした。ただし、ここのようにSpringプレースホルダーをオーバーライドするだけでよい場合
<bean class="test.B1">
<property name="prop1" value="${xxx}" />
</bean>
プロパティプレースホルダーのローカルオーバーライド属性を「true」に設定するだけで十分です
<context:property-placeholder location="classpath:/app.properties" local-override="true" />