1

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

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

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

谢谢

4

1 回答 1

4

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

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

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

<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。根据 spring 的版本,注释也可用。或者 PropertyResolver 也有一个命名空间。

所以 maven 过滤和 spring 可以很好地协同工作。

于 2013-04-23T17:52:05.123 回答