Spring配置xml和属性脱离战争

时间:2015-02-25 16:54:09

标签: xml spring spring-mvc spring-boot

我的目标是使SpringApplicationContext.xml和所有特定于环境的属性文件脱离war文件,以便war文件与环境无关。

1。外化属性文件:我想我需要做这样的事情..

<property name="searchSystemEnvironment" value="true" />
<property name="locations">
    <list>
        <value>file:///${MY_ENV_VAR_PATH}/my.app.config.properties</value>
    </list>
</property>

此处还讨论了how to read System environment variable in Spring applicationContext

2。外化SpringApplicationContext.xml :我可以使用外部化配置的Spring引导功能。

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Q1:刚接触Spring引导,我不确定是否可以安全地删除/取消选择Spring引导的所有不必要的功能并将其应用到我的项目中?我看到Spring引导用于从头开始的项目,在我的情况下,我正在开发一个成熟的项目。

Q2:外部化配置是反模式吗?我是否采用上述方法朝着正确的方向前进?

1 个答案:

答案 0 :(得分:1)

由于我没有使用过Spring boot,我只能回答你的第二个问题。 外化配置绝对不是反模式。它增加了客户站点的灵活性和简化(重新)部署。实际上我在谈论外化属性,而不是上下文配置。以下是我之前使用的tomcat中的外部化属性的示例:

<bean name="appProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">  
        <property name="locations">
            <list>
                <value>classpath:config-default/app.properties</value>
                <value>file:${CATALINA_BASE}/conf/app-properties</value>                    
            </list>
        </property>
        <property name="ignoreResourceNotFound" value="true" />
    </bean>

第一个条目是内部条目并设置默认属性。第二个条目引用可选的外部化文件,客户可以编辑该文件以覆盖默认属性。您还可以使用您认为可供客户修改的安全属性来传递第一个文件的子集。然后在每次更新中,保留目标环境中的设置。