第 59 章 Camel CDI
Camel CDI 组件使用 CDI 作为根据 约定配置进行依赖项注入框架,为 Apache Camel 提供自动配置。它自动检测应用程序中可用的 Camel 路由,并为通用 Camel 原语(如 Endpoint
、 FluentProducerTemplate
、ProducerTemplate
或 TypeConverter
)提供 Bean。它实施标准 Camel Bean 集成,以便 Camel 注释(如 @Consume
、 @Produce
和 @PropertyInject
)可以在 CDI Bean 中无缝使用。此外,它还将 Camel 事件桥接(如 RouteAddedEvent
、CamelContextStartedEvent
, ExchangeCompletedEvent
, …)作为 CDI 事件,并提供一个 CDI 事件端点,可用于消耗 / 到 Camel 路由的 / 生成 CDI 事件。
尽管 Camel CDI 组件作为 Camel 2.10 提供,但在 Camel 2.17 中被重写,以更好地适应 CDI 编程模型。因此,有些功能(如 Camel 事件)到 CDI 事件网桥,并且 CDI 事件端点仅应用启动 Camel 2.17。
Camel CDI 测试中提供了有关如何测试 Camel CDI 应用程序的更多详细信息。
Camel-cdi 在 OSGi 中已弃用,不受支持。如果使用 Camel 与 OSGi,请使用 OSGi 蓝图。
59.1. 自动配置的 Camel 上下文
Camel CDI 自动部署和配置 CamelContext
bean。当 CDI 容器初始化(关机)时,CamelContext
bean 会自动实例化、配置和启动(重新创建)。它可在应用程序中注入,例如:
@Inject CamelContext context;
默认的 CamelContext
bean 通过内置的 @Default
qualifier 进行授权,范围为 @ApplicationScoped
,是 DefaultCamelContext
类型。
请注意,这个 bean 也可以以编程方式自定义,其他 Camel 上下文 Bean 也可以部署到应用程序中。