Как отложить запуск весенних бобов?

Наличие весеннего приложения (на самом деле приложение grails), которое запускает сервер apache-activemq в качестве весеннего компонента и пару маршрутов apache-camel. Приложение использует Hibernate для работы с базой данных. Проблема проста. Activemq + Camel запускается ДО grails внедряет специальные методы в доменные объекты hibernate (собственно методы сохранения / обновления и т. Д.). Итак, если activemq уже имеет некоторые данные при запуске - верблюд начинает обрабатывать сообщения без добавления методов DAO. Это не работает с grails.lang.MissingMethodException . Должен отложить запуск activemq / camel, прежде чем Grails внедрит специальные методы в доменные объекты.

7
задан Archer 11 August 2010 в 21:04
поделиться

3 ответа

вы можете перенести управление MQ в плагин? Это увеличило бы модульность, и если вы объявите плагин-дескриптор

def loadAfter = ['hibernate']

, вы должны иметь желаемое поведение. Работает для плагина JBPM

4
ответ дан 6 December 2019 в 21:08
поделиться

Если все это определено как spring bean, вы можете использовать

<bean id="activeMqBean" depends-on="anotherBean" />

Это убедится, что anotherBean инициализируется перед activeMqBean

5
ответ дан 6 December 2019 в 21:08
поделиться

Я не уверен в вашем случае, но ленивая загрузка также может помочь, например,

<bean id="lazybean" class="com.xxx.YourBean" lazy-init="true">

Лениво инициализированный боб указывает IoC-контейнеру создать экземпляр боба при первом запросе. Это может помочь вам отложить загрузку нужных вам бобов.

3
ответ дан 6 December 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: