通过javacode向Spring3添加组件
有没有办法通过Spring的applicationConfig XML中的javacode添加ActiveMQ组件 我的主要目标是从外部属性文件中获取“brokerURL”。但是属性文件不是一个标准的属性文件,它基于XML,因此必须对其进行适当的解析并获取属性通过javacode向Spring3添加组件,java,spring,activemq,apache-camel,Java,Spring,Activemq,Apache Camel,有没有办法通过Spring的applicationConfig XML中的javacode添加ActiveMQ组件 我的主要目标是从外部属性文件中获取“brokerURL”。但是属性文件不是一个标准的属性文件,它基于XML,因此必须对其进行适当的解析并获取属性 <!-- COMPONENT BEANS --> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<!-- 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>
有几种方法 一个是真正的程序性的,比如:
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上下文交互。为什么不扩展PropertyPlaceHolderConfigure类,以便我可以从XML文件(使用commons配置或其他类似的包)中获取属性,并在spring配置中放置该类的实例
然后使用标准属性替换。您可以从各种来源获取属性(从其他地方获取属性可能需要代码),但我很难确定您使用的是哪种配置作为主要配置。主要是基于XML还是基于Java/注释?谢谢您的回复。这很有帮助!我正在寻找第二种方式“从其他地方连接连接工厂并进行注射”。我设置了MyAMQConfig类并创建了一个refbean。。但是获取这个错误初始化bean失败了;嵌套异常为org.springf ramework.beans.ConversionNotSupportedException:未能将类型为“com.test.properties.MyAMQConfig”的属性值转换为属性“ConnectionFactory”所需的类型“javax.jms.ConnectionFactory”;啊,我想出来了。。需要这个房子谢谢你的帮助!