我目前正在学习Spring,并且有一个多模块maven项目(父pom,下面有几个poms等)和许多上下文文件。
我现在希望在两个不同的环境A和B中使用两种不同的Spring配置文件。
所有bean定义都将保持不变,但从.properties文件中提取的值会有所不同。
如果我正确阅读文档,我必须复制每个上下文 .xml文件,并使用A的属性文件将其设置为profileA,将另一个设置为具有属性的profileB B的文件被引入。
这是正确的实施吗?如果bean签名改变似乎有意义,但如果它们完全相同并且只有拉入的属性值变化,那么似乎应该有一种更简单的方法。我想在运行时这样做,所以我只需要构建一次,这就是我决定反对maven配置文件的原因。
由于
答案 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配置(并以更简单的方式处理您想要的内容)