【问题标题】:Maven resource filtering - Spring applicationMaven 资源过滤 - Spring 应用
【发布时间】:2013-04-23 14:31:08
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: spring maven profiles


    【解决方案1】:

    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 可以很好地协同工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2013-04-11
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      相关资源
      最近更新 更多