我知道我问的问题必须在某个地方得到解答,但我无法在网上找到一些示例。
我希望在构建和运行时替换 Spring 3.0 bean定义以获得公共代码库。我也使用Maven配置文件来构建相同代码的不同版本。
目前我的bean def是
<bean id="somebean" class="com.x.SomeImpl" >
我需要在某些时候更换和部署它
<bean id="somebean" class="com.x.SomeOtherImpl" >
现在我想到的方法是
1)使用Maven配置文件将完整的applicationContext.xml切换到基于Maven配置文件的其他applicationContextB.xml。
2)以某种方式使用Maven个人资料?仅替换“somebean”的bean id定义
我的问题是:
a)如何实现选项2?
b)这些方法在构建期间仍然编译和打包SomeImpl和SomeOtherImpl。我怎样才能选择一个而不是另一个来进行补充和打包到EAR中?
我知道Spring 3.1有bean的env配置文件,但目前这不是一个选项。
答案 0 :(得分:2)
您可以考虑使用maven资源和filtering功能。您可以在上下文文件中包含占位符,并为每个配置文件保存值的属性文件。在每个配置文件中,您可以使用不同的属性文件并适当地过滤上下文文件。
答案 1 :(得分:0)
查看Maven Build Helper Plugin add-source。
您可以组合配置文件和Build Helper插件(添加源目标)以在两种情况下添加所需的类。
答案 2 :(得分:0)
您可以将多个配置文件导入配置,如下所示:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<import resource="applicationContextA.xml"/>
<import resource="applicationContextB"/>
</beans>
要切换,您可以使用Spring配置文件。