2014-01-16 5 views
0

Я ищу способ условно настроить jms: message-driven-channel-adapter весной 3.0 & Весенняя интеграция 2.2.Spring Integration - Как создать дополнительный jms: message-driven-channel-adapter?

Я хотел бы иметь запись в файле свойств, например: «create.message.driven.channel.adapter = true» для каждой среды, и мне хотелось бы, чтобы весна решила, следует ли настраивать канал или не основываться исключительно на на запись из файла свойств.

Есть ли способ выполнить это, используя только конфигурацию Spring xml и файл свойств?

ответ

1

Вы не можете сделать это точно так, как вы описали. С весны 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() все равно запустит его.

Смежные вопросы