第 45 章 API 组件框架简介
摘要
API 组件框架可帮助您解决基于大型 Java API 实施复杂 Camel 组件的问题。
45.1. 什么是 API 组件框架?
动机
对于包含少量选项的组件,实施组件(第 38 章 实现组件)的标准方法非常有效。然而,它开始出现问题时,就是您需要实施具有大量选项的组件。当涉及企业级组件时,这个问题会变得非常显著,这可能需要您打包由 数百个 操作组成的 API。此类组件需要大量努力来创建和维护。
API 组件框架经过精确开发,以应对实施此类组件的问题。
将 API 转换为组件
基于 Java API 实施 Camel 组件的经验表明,许多工作都是例行和机关。它包括采用特定的 Java 方法,将其映射到特定的 URI 语法,并允许用户通过 URI 选项设置方法参数。这种类型的工作是自动化和代码生成的最佳候选者。
通用 URI 格式
自动实施 Java API 的第一步是设计将 API 方法映射到 URI 的标准方法。为此,我们需要定义一个通用 URI 格式,可用于嵌套 任何 Java API。因此,API 组件框架定义了端点 URI 的以下语法:
scheme://endpoint-prefix/endpoint?Option1=Value1&...&OptionN=ValueN
其中 scheme
是组件定义的默认 URI 方案; endpoint-prefix
是一个简短 API 名称,它映射到嵌套 Java API 中的类或接口之一; 端点
映射到方法名称;URI 选项映射到方法参数名称。
单个 API 类的 URI 格式
如果 API 仅包含单个 Java 类,则 URI 的 endpoint-prefix
部分会变得冗余,您可以使用以下、较短的格式指定 URI:
scheme://endpoint?Option1=Value1&...&OptionN=ValueN
要启用此 URI 格式,组件实施或将 apiName
元素留空,以使 apiName 元素保留在 API 组件 Maven 插件配置中。如需更多信息,请参阅 “配置 API 映射”一节 部分。
反映和元数据
为了将 Java 方法调用映射到 URI 语法,很明显是需要某种形式的反映机制。但是,标准的 Java 反映 API 会受到影响:它不保留方法参数名称。这是一个问题,因为我们需要方法参数名称来生成有意义的 URI 选项名称。解决方法是提供替代格式的元数据:作为 Javadoc 或方法签名文件。
javadoc
javadoc 是 API 组件框架的理想元数据形式,因为它保留了完整的方法签名,包括方法参数名称。生成(特别是使用 maven-javadoc-plugin
)很容易,在很多情况下,第三方库中已提供。
方法签名文件
如果 Javadoc 因某种原因不可用或不合适,API 组件框架也支持元数据的替代源:方法签名文件。签名文件是一个简单的文本文件,由 Java 方法签名列表组成。通过从 Java 代码复制和粘贴(并可轻松编辑生成的文件)来手动创建这些文件相对容易。
框架由什么组成?
从组件开发人员的角度来看,API 组件框架由多个不同的元素组成,如下所示:
- Maven archetype
-
camel-archetype-api-component
Maven archetype 用于为组件实施生成框架代码。 - Maven 插件
-
camel-api-component-maven-plugin
Maven 插件负责生成在 Java API 和端点 URI 语法之间实现映射的代码。 - 专用基本类
-
为了支持 API 组件框架的编程模型,Apache Camel 核心在
org.apache.camel.util.component
软件包中提供了一个特殊的 API。此外,此 API 还为组件、端点、消费者和生成者类提供专门的基础类。