0

設定されているシステム環境変数に応じて、Spring Bean をロードする最良の方法を見つけようとしています。これはプロファイルを使用した簡単な作業であると認識していますが、残念ながら私は Spring 2.5 を使用しています。したがって、ここに私の XML ファイルの Bean 定義があります。

<bean id="updateBlogEntryListenerContainer"
          class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="concurrentConsumers" value="1"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="destinationName" value="queue/updateBlogEntryQueue"/>
        <property name="messageListener" ref="updateBlogEntryMessageHandler"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="sessionTransacted" value="true"/>
        <property name="destinationResolver" ref="destinationResolver"/>
</bean>

基本的に、システム環境変数の存在に基づいてその Bean のみをロードする方法を探しています。それ以外の場合は無視します。私は BeanPostProcessors と BeanFactoryPostProcessors の使用を検討してきましたが、解決策を完全に理解することはできません。これに関するヘルプは大歓迎です。ありがとう!

4

1 に答える 1

1

環境変数をチェックし、実際の Bean または NoOp 実装を作成する FactoryBean を実装できます。どこにも参照されていない場合は、FactoryBean から null を返すこともできます。

class ListenerContainerFactory extends FactoryBean<MessageListenerContainer> {

     MessageListenerContainer getObject() {
        if (someCondition) {
            // create and return DefaultMessageListenerContainer
        } else {
            // return null or some NoOpMessageListenerContainer
        }
     }
}
于 2012-05-13T14:48:54.533 に答える