有没有办法在Spring的applicationConfig XML中通过javacode添加ActiveMQ组件?
我的主要目标是从外部属性文件中选择“brokerURL”。但是属性文件不是标准属性文件,因此基于XML的文件必须适当地解析它并获取属性。
<!-- COMPONENT BEANS -->
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
</property>
</bean>
答案 0 :(得分:1)
有几种方法。
一个是真正的程序化,如下:
org.apache.activemq.camel.component.ActiveMQComponent amq = new org.apache.activemq.camel.component.ActiveMQComponent();
amq.setConnectionFactory(new ActiveMQConnectionFactory(parseOddXml(brokerXMLConfigFile)));
camelContext.addComponent("activemq", amq);
假设你有一个驼峰上下文感知bean来初始化你的组件。
否则,您或许可以从其他地方连接连接工厂,并将其注入到ActiveMQ组件的XML配置中。
这样的事可能
@Configuration
class MyAMQConfig{
public @Bean ActiveMQConnectionFactory createCF(){
String brokerURI = parseOddXml(brokerConfigFile); // or whatever logic here.
return new ActiveMQConnectionFactory(brokerURI);
}
}
然后是XML中的类似内容:
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="connectionFactory" ref="activeMQConnectionFactory"/>
</bean>
或者任何其他方式,因为有多种方法可以连接bean并与Camel Context进行交互。
答案 1 :(得分:1)
为什么不扩展PropertyPlaceholderConfigurer类以便我可以从XML文件中获取属性(使用commons-configuration或其他类似的包),并在spring配置中放置一个实例?
然后只使用标准物业替换。