@BeanInject
을 프로세서에 사용하려고하는데 항상 null
입니다.캔트를 프로세서에 넣으십시오
RouteBuilder
에서 빈에 액세스 할 수 있으며 프로세서 클래스가 RouteBuilder
에 정의되어 있지만 프로세서 클래스가 자체 파일에 정의되어 있지 않은 경우 프로세서에서도 액세스 할 수 있습니다.
이 기능이 지원되지 않습니까? 아니면 뭔가 빠졌습니까?
[업데이트] I 아파치 카멜 2.17.2을 사용하고 있는데, 코드가 이하의 코드는 오브젝트 제 1 프로세서의 인스턴스가 아닌 두 번째 인쇄 낙타 예-CDI 로부터 취해진 다. 코드는 단위 테스트에서 실행됩니다. 당신은 CDI 또는 스프링의 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 + "]");
}
}
당신이 어떤 코드를 보여 주면 사용하는 카멜의 버전과 어떻게 시작/달리는 카멜 –
안녕하세요, 미안, 내가 그랬어 야지. 게시물을 업데이트했습니다. –