60.8. Camel Bean の統合
60.8.1. Camel アノテーション リンクのコピーリンクがクリップボードにコピーされました!
Camel Bean 統合 の一部として、Camel には、Camel CDI によってシームレスにサポートされる一連の アノテーション が付属しています。したがって、CDI Bean でこれらのアノテーションのいずれかを使用できます。
| Camel アノテーション | CDI 相当 | |
|---|---|---|
| 設定プロパティー |
@PropertyInject("key")
String value;
| DeltaSpike 設定メカニズム を使用する場合: @Inject @ConfigProperty(name = "key") String value;
詳細については、設定プロパティーを参照してください。 |
| プロデューサーテンプレートインジェクション (デフォルトの Camel コンテキスト) |
@Produce(uri = "mock:outbound") ProducerTemplate producer; @Produce(uri = "mock:outbound") FluentProducerTemplate producer;
|
|
| エンドポイントインジェクション (デフォルトの Camel コンテキスト) |
@EndpointInject(uri = "direct:inbound") Endpoint endpoint;
|
@Inject
@Uri("direct:inbound")
Endpoint endpoint;
|
| エンドポイントインジェクション (名前による Camel コンテキスト) |
@EndpointInject(uri = "direct:inbound",
context = "foo")
Endpoint contextEndpoint;
|
@Inject
@ContextName("foo")
@Uri("direct:inbound")
Endpoint contextEndpoint;
|
| Bean インジェクション (種類別) |
@BeanInject MyBean bean;
|
@Inject MyBean bean;
|
| Bean インジェクション (名前別) |
@BeanInject("foo")
MyBean bean;
|
@Inject
@Named("foo")
MyBean bean;
|
| POJO consuming |
@Consume(uri = "seda:inbound")
void consume(@Body String body) {
//...
}
|
60.8.2. Bean コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Java Camel DSL などを使用して、Camel DSL から、タイプまたは名前で CDI Bean を参照できます。
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
または、Java DSL から名前で CDI Bean を検索するには:
60.8.3. エンドポイント URI からの Bean の参照 リンクのコピーリンクがクリップボードにコピーされました!
URI 構文を使用してエンドポイントを設定する場合、# 表記を使用してレジストリー内の Bean を参照できます。URI パラメーター値が # 記号で始まる場合、Camel CDI は指定されたタイプの Bean を名前で検索します。以下に例を示します。
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
次の CDI Bean を @Named("jtaTransactionManager") で修飾します。