이 콘텐츠는 선택한 언어로 제공되지 않습니다.
15.2. Camel Bean Integration
Camel annotations 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
As part of the Camel bean integration, Camel comes with a set of annotations that are seamlessly supported by Camel CDI. So you can use any of these annotations in your CDI beans, for example:
| Camel annotation | CDI equivalent | |
|---|---|---|
| Configuration property |
|
If using DeltaSpike configuration mechanism:
See configuration properties for more details.
|
| Producer template injection (default Camel context) |
|
|
| Endpoint injection (default Camel context) |
|
|
| Endpoint injection (Camel context by name) |
|
|
| Bean injection (by type) |
|
|
| Bean injection (by name) |
|
|
| POJO consuming |
|
Bean component 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
You can refer to CDI beans, either by type or name, From the Camel DSL, for example with the Java Camel DSL:
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
Or to lookup a CDI bean by name from the Java DSL:
@Named("foo")
class MyNamedBean {
//...
}
from("direct:inbound").bean("foo");
Referring beans from Endpoint URIs 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
When configuring endpoints using the URI syntax you can refer to beans in the Registry using the
# notation. If the URI parameter value starts with a # sign then Camel CDI will lookup for a bean of the given type by name, for example:
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
Having the following CDI bean qualified with
@Named("jtaTransactionManager"):
@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
jtaTransactionManager.setUserTransaction(userTransaction);
jtaTransactionManager.setTransactionManager(transactionManager);
jtaTransactionManager.afterPropertiesSet();
return jtaTransactionManager;
}