Spring配置文件实现,只有* .properties更改

时间:2014-04-04 20:06:48

标签: java spring maven profile

我目前正在学习Spring,并且有一个多模块maven项目(父pom,下面有几个poms等)和许多上下文文件。

我现在希望在两个不同的环境A和B中使用两种不同的Spring配置文件。

所有bean定义都将保持不变,但从.properties文件中提取的值会有所不同。

如果我正确阅读文档,我必须复制每个上下文 .xml文件,并使用A的属性文件将其设置为profileA,将另一个设置为具有属性的profileB B的文件被引入。

这是正确的实施吗?如果bean签名改变似乎有意义,但如果它们完全相同并且只有拉入的属性值变化,那么似乎应该有一种更简单的方法。我想在运行时这样做,所以我只需要构建一次,这就是我决定反对maven配置文件的原因。

由于

1 个答案:

答案 0 :(得分:1)

无需复制context.xml。您需要的是根据提供的配置文件为您提供不同的属性。这可以通过XML或Java Config轻松完成。如果您使用的是XML,那么在context.xml的末尾,您需要执行类似这样的操作

<beans profile="dev">
     <context:property-placeholder location="classpath*:dev.properties"/>
</beans>
<beans profile="production">
     <context:property-placeholder location="classpath*:production.properties"/>
</beans>

如果您需要相应的Java Config,请告诉我,我会为您发布。

启动应用程序时,需要提供正确的配置文件(一种方法是将-Dspring.profiles.active =&#34; production&#34;添加到命令行参数中)

另外我建议如果您刚刚开始使用项目,请查看Spring Boot,它可以大大简化Spring配置(并以更简单的方式处理您想要的内容)