gpt4 book ai didi

java - 在 apache Camel 中使用 guice

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:05 27 4
gpt4 key购买 nike

我正在使用带有 camel-guice 的 Apache Camel 2.11.1,但我无法弄清楚如何为自动启动引导一个 bean。

使用 camel-context.xml 我可以写:

<beans xmlns="http://www.springframework.org/schema/beans" ...
<camel:camelContext xmlns="http://camel.apache.org/schema/spring" id="my-camel-context">
<camel:packageScan>
<camel:package>package.routes</camel:package>
</camel:packageScan>
</camel:camelContext>

<bean id="fooBean" class="package.beans.FooBean" />

<bean id="barBean" class="package.beans.BarBean" >
<constructor-arg ref="fooBean"/>
<constructor-arg ref="my-camel-context"/>
</bean>
...
</beans>

BarBean类

public class BarBean implements SmartLifecycle, StartupListener {
...
}

camel 调用了 BarBean 中实现的钩子(Hook),但我该如何使用 guice 解决这个问题?

编辑:我正在使用 org.apache.camel.guice.Main 来启动我的 Camel 。

最佳答案

如果您将 CamelGuice 一起使用,那么您就是在通过 CamelModule 配置您的应用程序,对吗?

然后 CamelModule 正在使用 wikipedia:JSR250JSR250这是 JavaTM 平台通用注解的正式规范。

因此,您可以自由地使用它们来管理对象生命周期。

要引导您的应用程序,您的主要外观如下所示:

final Injector inj = Guice.createInjector(new MyCamelModule());
Main main = new Main() {
@Override
protected Injector getInjectorFromContext() throws Exception {
return inj;
}
};
main.enableHangupSupport();
main.run(args);

您的MyCamelModule 应该包含bind 您的bean。看起来您的 bean 刚刚实现,所以您要做的就是将 @Inject 放入 bean 构造函数。

关于java - 在 apache Camel 中使用 guice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com