2014-04-04 44 views
0

我目前正在学习Spring的过程中,并且有一个多模块maven项目(父pom,几个poms等等)以及许多上下文文件。Spring配置文件的实现,只改变* .properties

我现在正在使用两个不同的弹簧配置文件两个不同的环境中,A和B.

所有bean定义将保持不变,但是值从.properties文件会有所不同拉。

如果我正确阅读文档,我必须复制每个上下文 .xml文件,并将其中一个设置为profileA,其中A为属性文件,另一个设置为profileB,其中属性文件为B带来。

这是正确的实施?这似乎是有道理的,如果豆签名改变,但如果他们是完全一样的,只有属性值被拉入不同似乎应该有一个更简单的方法。我想在运行时执行此操作,因此我只需构建一次,这就是为什么我决定不使用maven配置文件的原因。

谢谢

回答

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配置,让我知道,我会张贴你。

当你开始你需要提供正确的配置文件的应用程序(一个方法是将-Dspring.profiles.active =“生产”的命令行参数)

此外,我会建议,如果你是刚开始使用项目时,请查看Spring Boot,它大大简化了Spring配置(并且以更简单的方式考虑了您的需求)

+0

Java配置不是必需的;我假设我可以传递我想用作参数的配置文件? (-Dspring.profiles.active =“dev”)。 –

+0

@DaxDurax准确地说,配置文件是Spring的一个参数,可以通过多种方式进行设置。一个是-D,另一个是​​spring.profiles.active 生产 在web.xml中,一个集成测试(或Java配置)你可以使用ActiveProfiles注解 – geoand