Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在apachecamel中使用guice_Java_Apache Camel_Guice - Fatal编程技术网

Java 在apachecamel中使用guice

Java 在apachecamel中使用guice,java,apache-camel,guice,Java,Apache Camel,Guice,我将ApacheCamel 2.11.1与Camel guice一起使用,但我不知道如何为AutoStart引导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"&g

我将ApacheCamel 2.11.1与Camel guice一起使用,但我不知道如何为AutoStart引导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>
camel调用在BarBean中实现的钩子,但是如何使用guice解决这个问题呢


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

如果您将
camel
guice
一起使用,那么您是通过
CamelModule
配置应用程序,对吗

然后,
CamelModule
正在使用or,它是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构造函数

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