【发布时间】:2017-11-10 07:37:26
【问题描述】:
我正在尝试在处理器中使用@BeanInject,但它始终是null。
我可以在 RouteBuilder 中访问 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 + "]");
}
}
【问题讨论】:
-
如果您显示一些代码,并告诉我们您使用的 Camel 版本以及您如何启动/运行 Camel,将会有所帮助
-
嗨,对不起,是的,我应该这样做。我已经更新了帖子。
标签: apache-camel apache-camel-cdi