使用maven配置文件切换spring应用程序上下文或Impl java类

时间:2012-03-29 08:09:10

标签: spring maven maven-3

我知道我问的问题必须在某个地方得到解答,但我无法在网上找到一些示例。

我希望在构建和运行时替换 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配置文件,但目前这不是一个选项。

3 个答案:

答案 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配置文件。