1

SpringのapplicationConfigXMLに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>
4

2 に答える 2

1

PropertyPlaceholderConfigurerクラスを拡張して、XMLファイルからプロパティを取得し(commons-configurationまたはそのような他のパッケージを使用)、そのインスタンスをSpring構成に配置できるようにしないのはなぜですか?

次に、標準のプロパティ置換を使用しました。

于 2012-06-27T03:04:44.830 に答える
1

いくつかの方法があります。

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コンテキストと対話する方法は複数あるためです。

于 2012-06-26T21:13:58.347 に答える