我正在尝试@BeanInject
在处理器中使用,但它始终是null
.
如果处理器类在其自己的文件中RouteBuilder
定义,我可以访问 a 中的 bean ,也可以访问处理器中的 bean。RouteBuilder
这是不支持还是我错过了什么?
[更新] 我使用的是 Apache Camel 2.17.2,代码取自 camel-example-cdi 下面的代码在第一个处理器中打印对象实例,但不是在第二个处理器中。代码在单元测试中运行。
public class MyRoutes extends RouteBuilder {
final static Logger LOG = LoggerFactory.getLogger(MyRoutes.class);
@Inject
@Uri("timer:foo?period=5000" )
private Endpoint inputEndpoint;
@Inject
@Uri("log:output")
private Endpoint resultEndpoint;
@BeanInject
private SomeBean someBean;
@Override
public void configure() {
from("timer:foo?period=500")
.to("bean:counterBean")
.process(new Processor(){
@Override
public void process(Exchange exchange) throws Exception {
LOG.info("[" + someBean + "]");
}
})
.process(new MyProcessor())
.to("mock:result");
}
}
处理器
public class MyProcessor implements Processor {
final static Logger LOG = LoggerFactory.getLogger(MyProcessor.class);
@BeanInject
private SomeBean someBean;
@Override
public void process(Exchange exchange) throws Exception {
LOG.info("In processor [" + someBean + "]");
}
}