Setting System properties using Spring

Approach 1 :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context-3.0.xsd
                           http://www.springframework.org/schema/util
                           http://www.springframework.org/schema/util/spring-util-3.0.xsd">

    <!-- enable processing of annotations such as @Autowired and @Configuration -->
    <context:annotation-config/> 


    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject">
            <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
                <property name="targetClass" value="java.lang.System" />
                <property name="targetMethod" value="getProperties" />
            </bean>
        </property>
        <property name="targetMethod" value="putAll" />
        <property name="arguments">
            <util:properties>
                <prop key="test.key">test.value</prop>
            </util:properties>
        </property>
    </bean>

</beans>

Approach 2 : Suggested by Sam Mohamed

    @Bean
    public Properties retrieveSystemProperties() {
        return System.getProperties();
    }

    private Properties systemProperties;

    public Properties getSystemProperties() {
        return systemProperties;
    }

    @Resource(name = "retrieveSystemProperties")
    public void setSystemProperties(Properties systemProperties) {
        this.systemProperties = systemProperties;
    }

    @Bean
    public MethodInvokingFactoryBean methodInvokingFactoryBean() {
        MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean();
        methodInvokingFactoryBean.setStaticMethod("java.lang.System.setProperties");
        systemProperties.setProperty("http.keepAlive", "false");
        methodInvokingFactoryBean.setArguments(new Object[] { systemProperties });
        return methodInvokingFactoryBean;
    }