我正在寻找一种方法来有条件地设置jms:消息驱动通道适配器在Spring 3.0& spring integration 2.2。
我想在一个属性文件中有一个条目,例如:“create.message.driven.channel.adapter = true”,我希望能够根据以下内容决定是否设置频道属性文件中的条目。
有没有办法只使用spring xml配置和属性文件来实现这个目的?
答案 0 :(得分:1)
你不能完全按照你描述的方式去做。使用Spring 3.1,您可以使用Spring Profiles ...
<beans>
...
<beans profile="foo">
<jms:message-driven-adapter ... />
</beans>
</beans>
然后使用... -Dspring.profiles.active=foo
运行。
你可以用JavaConfig
来做@Bean
public Object foo() {
// if property set, return an MDA, otherwise a String
}
或者,可能是最简单的,只要您没有明确start()
上下文,就可以使用
<jms:message-driven-adapter ...
auto-startup="${start.message.driven.channel.adapter}" />
在这种情况下,将定义bean,但它不会被启动,因此甚至不会打开JMS连接。您还需要一个指向属性文件的属性占位符配置器。
但是,自动启动仅适用于从refresh()
开始,显式context.start()
仍会启动它。