第 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

方案是组件定义的默认 URI 方案; 端点前缀 是一个简短的 API 名称,它映射到嵌套的 Java API 中的其中一个类或接口; 端点 映射到方法名称,URI 选项映射到方法参数名称。

单个 API 类的 URI 格式

如果 API 仅由一个 Java 类组成,则 URI 的端点 前缀 部分会变为冗余,且您可以在以下格式指定 URI:

scheme://endpoint?Option1=Value1&...&OptionN=ValueN
注意

要启用这个 URI 格式,组件实施者还需要使 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 还提供专用的基础类,供组件、端点、使用者和制作者类使用。