如何延迟spring beans启动?

Arc*_*her 7 grails spring

有一个spring应用程序(实际上是grails应用程序)运行apache-activemq服务器作为spring bean和几个apache-camel路由.应用程序使用hibernate来处理数据库.问题很简单.Activemq + Camel启动BEFOREgrails将特殊方法注入hibernate域对象(实际上是保存/更新方法等).因此,如果activemq在启动时已经有一些数据 - camel开始处理没有注入grails DAO方法的消息.这失败了grails.lang.MissingMethodException.必须在Grails将特殊方法注入域对象之前延迟activemq/camel启动.

Boz*_*zho 5

If all these are defined as spring bean, you can use

<bean id="activeMqBean" depends-on="anotherBean" />
Run Code Online (Sandbox Code Playgroud)

This will make sure anotherBean is initialized before activeMqBean


Sam*_*lez 4

可以将 MQ 管理移至插件中吗?它将增加模块化性,如果您在插件描述符中声明

def loadAfter = ['hibernate']
Run Code Online (Sandbox Code Playgroud)

你应该有想要的行为。适用于JBPM 插件