Spring配置文件和Spring Integration命名空间

时间:2012-10-01 08:43:25

标签: spring spring-integration

我正在尝试创建以下弹簧配置

<beans profile="profile1">
    <jms:outbound-channel-adapter id="sampleId"/>
</beans>

<beans profile="profile2">
    <jms:outbound-channel-adapter id="sampleId"/>
</beans>

(jms:outbound-channel-adapter是spring integration的命名空间)

创建此类上下文时,我得到重复的bean ID异常...

知道为什么吗?

编辑..(活动配置文件设置为profile1)

2 个答案:

答案 0 :(得分:0)

您必须为当前上下文提供有效的配置文件。此令牌可以设置为:
环境变量
JVM属性
Web参数
编程
Spring还会查找令牌spring.profiles.default,如果没有使用spring.profiles.active指定,则可以使用它来设置默认配置文件。

示例:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>web-dev</param-value>
    </init-param>
</servlet>

applicationContext的外观如下:

<beans profile="web-dev, test-dev">
        <import resource="trace-context.xml"/>
        <import resource="spring-data-jpa.xml"/>
        <import resource="spring-security-roles.xml" />
    </beans>

    <beans profile="web-dev">
        <bean id="deployProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"
                p:location="/WEB-INF/spring.properties" />

        <import resource="spring-cache.xml"/>
        <import resource="tiles-context.xml" />
        <import resource="themes-context.xml" />
    </beans>  

    <beans profile="test-dev">
        <bean id="deployProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"
                p:location="classpath:spring.properties" />
    </beans>

答案 1 :(得分:0)

确保所有相关的xsd声明都使用&gt; = 3.1版本。在Spring 3.1版中添加了配置文件功能。至少为bean和jms命名空间设置。另见我对类似SO问题的回答here