59.11. Camel XML 設定のインポート
Camel 2.18 から利用可能
CDI はタイプセーフな依存性注入メカニズムを優先しますが、既存の Camel XML 設定ファイルを Camel CDI アプリケーションに再利用すると便利な場合があります。 他の使用例では、Camel XML DSL に依存してその Camel コンテキストを設定すると便利な場合があります。
Camel CDI によって提供される @ImportResource アノテーションを任意の CDI Bean で使用できます。Camel CDI は、指定されたロケーションに Camel XML 設定を自動的にロードします。
@ImportResource("camel-context.xml")
class MyBean {
}
@ImportResource("camel-context.xml")
class MyBean {
}
Camel CDI は、クラスパスから指定されたロケーションにリソースをロードします (他のプロトコルが将来追加される可能性があります)。
インポートされたリソースのすべての CamelContext 要素とその他の Camel プリミティブは、コンテナーのブートストラップ中に CDI Bean として自動的にデプロイされるため、Camel CDI によって提供される自動設定の恩恵を受け、実行時に注入できるようになります。そのような要素に明示的な id 属性が設定されている場合、対応する CDI Bean は @Named 修飾子で修飾されます。たとえば、次の Camel XML 設定が与えられます。
対応する CDI Bean が自動的にデプロイされ、注入することができます。
CamelContext Bean は、@Named 修飾子と @ContextName 修飾子の両方で自動的に修飾されることに注意してください。インポートされた CamelContext 要素に id 属性がない場合、対応する Bean は組み込みの @Default 修飾子でデプロイされます。
逆に、アプリケーションにデプロイされた CDI Bean は、通常は ref 属性を使用して、Camel XML 設定から参照できます。たとえば、次の Bean が宣言されているとします。
@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");
@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");
その Bean への参照は、インポートされた Camel XML 設定で宣言できます。