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; |
@Inject @Uri("direct:outbound") ProducerTemplate producer; @Produce(uri = "direct: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);
または、Java DSL から名前で CDI Bean を検索するには:
@Named("foo") class MyNamedBean { //... } from("direct:inbound").bean("foo");
60.8.3. エンドポイント URI からの Bean の参照
URI 構文を使用してエンドポイントを設定する場合、#
表記を使用してレジストリー内の Bean を参照できます。URI パラメーター値が #
記号で始まる場合、Camel CDI は指定されたタイプの Bean を名前で検索します。以下に例を示します。
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
次の CDI Bean を @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; }