1.2. Spring Boot
Spring Boot は Camel を自動的に設定します。Camel コンテキストのオピニオン自動設定は、Spring コンテキストで使用できる Camel ルートを自動検出し、プロデューサーテンプレート、コンシューマーテンプレート、タイプコンバーターなどの主な Camel ユーティリティーを Bean として登録します。
Maven ユーザーは、このコンポーネントを使用するために pom.xml に次の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
camel-spring-boot jar には spring.factories ファイルが付属しているため、その依存関係をクラスパスに追加するとすぐに、Spring Boot が自動的に Camel を自動設定します。
1.2.1. Camel Spring Boot スターター リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel には、スターターを使用して Spring Boot Starter アプリケーションを開発できる、Spring Boot スターターモジュールが含まれています。ソースコードにも サンプルアプリケーション があります。
スターターを使用するには、Spring Boot pom.xml ファイルに以下を追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-bom</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-bom</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
次に、次のような Camel ルートでクラスを追加するだけです。
その後、これらのルートは自動的に開始されます。
application.properties または application.yml ファイルで Camel アプリケーションをカスタマイズできます。
1.2.2. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot で spring -boot を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-starter</artifactId> <version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version --> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.20.1.redhat-00064</version> <!-- use the same version as your Camel core version -->
</dependency>
1.2.3. 自動設定された Camel コンテキスト リンクのコピーリンクがクリップボードにコピーされました!
Camel 自動設定によって提供される最も重要な機能は、CamelContext インスタンスです。Camel 自動設定は、SpringCamelContext を作成し、そのコンテキストの適切な初期化とシャットダウンを処理します。作成された Camel コンテキストは、Spring アプリケーションコンテキストにも (camelContext Bean 名で) 登録されるため、他の Spring Bean と同じようにアクセスできます。
1.2.4. Camel ルートの自動検出 リンクのコピーリンクがクリップボードにコピーされました!
Camel auto-configuration は、Spring コンテキストからすべての RouteBuilder インスタンスを収集し、提供された CamelContext に自動的に注入します。これは、Spring Boot スターターを使用して新しい Camel ルートを作成するのは、@Component アノテーション付きクラスをクラスパスに追加するのと同じくらい簡単であることを意味します。
または、新しいルート RouteBuilder Bean を @Configuration クラスで作成します。
1.2.5. Camel プロパティー リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot の自動設定は、プロパティーのプレースホルダー、OS 環境変数、Camel プロパティーがサポートされるシステムプロパティーなどの Spring Boot 外部設定 に自動的に接続します。これは基本的に、application.properties ファイルで定義されたすべてのプロパティーを意味します。
route.from = jms:invoices
route.from = jms:invoices
または、システムプロパティーを介して設定します。
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
Camel ルートのプレースホルダーとして使用できます。
1.2.6. カスタムの Camel コンテキスト設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel 自動設定によって作成された CamelContext Bean でいくつかの操作を実行する場合は、Spring コンテキストに CamelContextConfiguration インスタンスを登録します。
メソッド beforeApplicationStart は Spring コンテキストが開始される直前に呼び出されるため、このコールバックに渡される CamelContext インスタンスは完全に自動設定されます。CamelContextConfiguration の複数のインスタンスを Spring コンテキストに追加すると、各インスタンスが実行されます。
1.2.7. 自動設定されたコンシューマーおよびプロデューサーのテンプレート リンクのコピーリンクがクリップボードにコピーされました!
Camel auto configuration によって、事前設定された ConsumerTemplate および ProducerTemplate インスタンスが提供されます。それらを Spring-managed の Bean に簡単に注入できます。
デフォルトでは、コンシューマーテンプレートとプロデューサーテンプレートのエンドポイントキャッシュサイズは 1000 に設定されています。これらの値は、次の Spring プロパティーを変更することで変更できます。
camel.springboot.consumer-template-cache-size = 100 camel.springboot.producer-template-cache-size = 200
camel.springboot.consumer-template-cache-size = 100
camel.springboot.producer-template-cache-size = 200
1.2.8. 自動設定された TypeConverter リンクのコピーリンクがクリップボードにコピーされました!
Camel auto configuration では、Spring コンテキストの typeConverter という名前の TypeConverter インスタンスが登録されます。
1.2.8.1. Spring タイプコンバージョン API ブリッジ リンクのコピーリンクがクリップボードにコピーされました!
Spring には、強力な 型変換 API が付属しています。Spring API は Camel の 型コンバーター API と似ています。両方の API が非常に似ているため、Camel Spring Boot は、Spring 変換 API に委譲するブリッジコンバーター (SpringTypeConverter) を自動的に登録します。これは、すぐに使用できる Camel が Spring コンバーターを Camel コンバーターのように扱うことを意味します。このアプローチでは、Camel TypeConverter API 経由でアクセスする Camel コンバーターと Spring コンバーターの両方を使用できます。
Camel Spring Boot は、アプリケーションコンテキストで利用可能な Spring の ConversionService インスタンスに変換を委ねます。ConversionService インスタンスが利用できない場合は、Camel Spring Boot 自動設定によってインスタンスが作成されます。
1.2.9. アプリケーションの存続 リンクのコピーリンクがクリップボードにコピーされました!
この機能が有効になっている Camel アプリケーションは、JVM の終了を防止してアプリケーションを存続させることのみを目的として、起動時に新しいスレッドを起動します。つまり、Spring Boot で Camel アプリケーションを開始した後、アプリケーションは Ctrl+C シグナルを待機し、すぐには終了しません。
コントローラースレッドは、camel.springboot.main-run-controller を true に設定してアクティブ化できます。
camel.springboot.main-run-controller = true
camel.springboot.main-run-controller = true
Web モジュールを使用するアプリケーション (例えば org.springframework.boot:spring-boot-web-starter モジュールをインポートするアプリケーション) は、他の非デーモンスレッドの存在によってアプリケーションが維持されるため、通常この機能を使用する必要はありません。
1.2.10. XML ルートの追加 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Camel XML ルートをディレクトリー camel の下のクラスパスに配置できます。これは、camel-spring-boot が自動検出して含めます。ディレクトリー名を設定するか、設定オプションを使用してこれをオフにすることができます。
turn off
# turn off
camel.springboot.routes-include-pattern = false
scan only in the com/foo/routes classpath
# scan only in the com/foo/routes classpath
camel.springboot.routes-include-pattern = classpath:com/foo/routes/*.xml
XML ファイルは、次のような Camel XML ルート (<CamelContext>ではない) である必要があります。
1.2.11. JUnit 5 の方法をテストする リンクのコピーリンクがクリップボードにコピーされました!
テストのために、Maven ユーザーは次の依存関係を pom.xml に追加する必要があります。
Camel Spring Boot アプリケーションをテストするには、テストクラスに @CamelSpringBootTest のアノテーションを付けます。これにより、Camel の Spring Test サポートがアプリケーションにもたらされるため、Spring Boot テスト規則 を使用してテストを作成できます。
CamelContext または ProducerTemplate を取得するには、@Autowired を使用して、通常の Spring の方法でそれらをクラスに注入できます。
camel-test-spring-junit5 を使用して、テストを宣言的に設定することもできます。この例では、@MockEndpoints アノテーションを使用して、エンドポイントを自動モック化します。