你可以用两个
MethodInvokingFactoryBeans的组合来实现
创建一个访问System.getProperties的内部bean和一个外部bean,它调用内部bean获取的属性上的putAll:
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
name="targetObject">
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
name="targetMethod"
value="putAll" />
name="arguments">
key="my.key">myvalue
key="my.key2">myvalue2
key="my.key3">myvalue3
(你当然可以只使用一个bean和目标System.setProperties(),但是你将替换现有的属性,这不是一个好主意。
无论如何,这里是我的小测试方法:
public static void main(final String[] args) {
new ClassPathXmlApplicationContext("classpath:beans.xml");
System.out.println("my.key: "+System.getProperty("my.key"));
System.out.println("my.key2: "+System.getProperty("my.key2"));
System.out.println("my.key3: "+System.getProperty("my.key3"));
// to test that we're not overwriting existing properties
System.out.println("java.io.tmpdir: "+System.getProperty("java.io.tmpdir"));
}
这里的输出:
my.key: myvalue
my.key2: myvalue2
my.key3: myvalue3
java.io.tmpdir: C:\DOKUME~1\SEANFL~1\LOKALE~1\Temp\