60.8. Camel bean 集成
60.8.1. Camel 注解 复制链接链接已复制到粘贴板!
作为 Camel bean 集成 的一部分,Camel 附带了一组由 Camel CDI 无缝支持 的注解。因此,您可以在 CDI Bean 中使用这些注解,例如:
| Camel 注解 | 对等的 CDI | |
|---|---|---|
| 配置属性 |
| 如果使用 DeltaSpike 配置机制 :
如需了解更多详细信息,请参阅 配置属性。 |
| 生产者模板注入(默认 Camel 上下文) |
|
|
| 端点注入(默认 Camel 上下文) |
|
|
| 端点注入(按名称的Camel 上下文) |
|
|
| Bean 注入(按类型) |
|
|
| Bean 注入(按名称) |
|
|
| POJO 消耗 |
|
60.8.2. Bean 组件 复制链接链接已复制到粘贴板!
您可以在 Camel DSL 中按类型或名称引用 CDI Bean,例如使用 Java Camel DSL:
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
或者按名称从 Java DSL 查找 CDI bean:
@Named("foo")
class MyNamedBean {
//...
}
from("direct:inbound").bean("foo");
60.8.3. 从端点 URI 引用 Bean 复制链接链接已复制到粘贴板!
当使用 URI 语法配置端点时,您可以使用 # 表示法引用 Registry 中的 Bean。如果 URI 参数值以 # 符号开头,则 Camel CDI 将按名称查找给定类型的 bean,例如:
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
具有以下 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;
}