【问题标题】:Switching spring application context or Impl java classes using maven profiles使用 maven 配置文件切换 spring 应用程序上下文或 Impl java 类
【发布时间】:2012-03-29 08:09:10
【问题描述】:

我知道我要问的问题必须在某个地方得到回答,但我在网上找不到带有一些指导方针的示例。

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

【问题讨论】:

    标签: spring maven maven-3


    【解决方案1】:

    您可以考虑使用可用的 maven 资源和 filtering 功能。您可以在上下文文件中有占位符,并且每个配置文件都有一个属性文件来保存值。在每个配置文件中,您可以使用不同的属性文件并适当地过滤您的上下文文件。

    【讨论】:

    • 正确 - 这解释了 (a) 部分。知道如何选择要在 EAR 中包含/排除的 java 文件
    • 请注意不要以不可预知的构建结束,尤其是在多模块项目中,如果您可以在本地 repo 中拥有相同的二进制工件,并使用不同的内置配置文件,具体取决于哪个您构建的个人资料。避免这种情况的最简单方法是在每个配置文件中对人工制品进行不同的标记。
    【解决方案2】:

    看看Maven Build Helper Plugin add-source。

    您可以结合配置文件和 Build Helper Plugin(添加源目标)在这两种情况下添加所需的类。

    【讨论】:

      【解决方案3】:

      您可以像这样将多个配置文件导入到您的配置中:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-09
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        • 2015-05-22
        • 2015-08-31
        相关资源
        最近更新 更多