我只是想知道,Maven资源过滤机制在什么时候将值从配置文件注入目标文件?我问的是因为我的应用程序正在使用Spring,并且根据JVM属性,它将调用我的一个应用程序环境文件,而这些文件又用于在Spring bean创建时提供配置信息。
我想将密码和数据库类型信息从环境文件移动到Maven Settings.xml文件中但是我想知道Spring会覆盖还是与Maven资源过滤工作方式发生冲突?
目标是让Spring决定运行应用程序的环境,并选择一个已经具有Maven注入的必要值的环境文件。
由于
答案 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过滤和弹簧很好地协同工作。