你可以结合使用两个MethodInvokingFactoryBeans来实现
创建一个访问System.getProperties的内部bean,并在内部bean获取的属性上调用putAll的外部bean:
<bean > <property name="targetObject"> <!-- System.getProperties() --> <bean > <property name="targetClass" value="java.lang.System" /> <property name="targetMethod" value="getProperties" /> </bean> </property> <property name="targetMethod" value="putAll" /> <property name="arguments"> <!-- The new Properties --> <util:properties> <prop key="my.key">myvalue</prop> <prop key="my.key2">myvalue2</prop> <prop key="my.key3">myvalue3</prop> </util:properties> </property></bean>
(你当然可以只使用一个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: myvaluemy.key2: myvalue2my.key3: myvalue3java.io.tmpdir: C:DOKUME~1SEANFL~1LOKALE~1Temp



