@BeanInject
をプロセッサに使用しようとしていますが、常にnull
です。プロセッサにBeanを挿入する
RouteBuilder
でBeanにアクセスできます。また、ProcessorクラスがRouteBuilder
に定義されている場合はProcessorにもアクセスできますが、Processorクラスがそれ自身のファイルにない場合はアクセスできます。
これはサポートされていませんか、何か不足していますか?
[更新] 私はApache Camel 2.17.2を使用しています。コードはcamel-example-cdiから取得しました 以下のコードはオブジェクトインスタンスを最初のプロセッサに表示しますが、2番目のプロセッサには表示しません。コードは単体テストで実行されます。あなたがCDIやSpringのIoCなどを使用していけない場合、後者が悪いマン代用である、とのみ -
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");
}
}
プロセッサあなたがCDIを使用している場合
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を起動/実行する方法を教えてください。 –
こんにちは、すみませんでした。私は投稿を更新しました。 –