Maven资源过滤 - Spring应用程序

时间:2013-04-23 14:31:08

标签: spring maven profiles

我只是想知道,Maven资源过滤机制在什么时候将值从配置文件注入目标文件?我问的是因为我的应用程序正在使用Spring,并且根据JVM属性,它将调用我的一个应用程序环境文件,而这些文件又用于在Spring bean创建时提供配置信息。

我想将密码和数据库类型信息从环境文件移动到Maven Settings.xml文件中但是我想知道Spring会覆盖还是与Maven资源过滤工作方式发生冲突?

目标是让Spring决定运行应用程序的环境,并选择一个已经具有Maven注入的必要值的环境文件。

由于

1 个答案:

答案 0 :(得分:4)

Maven在流程资源阶段替换占位符。见http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

因此,当spring开始创建其上下文时,值就在那里。

您可以使用PropertyPlaceholderConfigurer读取属性文件并在弹簧上下文中使用它们:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>file://${config.dir}/external-config.properties</value>
        </list>
    </property>
</bean>

“config.dir”在系统属性中:java -Dconfig.dir = / dir /或者我认为它也可以是一个上下文参数。

在spring文件中,属性文件中的$ {key}可用于配置bean。根据弹簧的版本,还可以使用注释。或者PropertyResolver也有一个命名空间。

所以maven过滤和弹簧很好地协同工作。