第 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 的端点前缀 部分会具有冗余,并且您可以使用以下更短的格式指定 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 为组件、端点、消费者和制作者类提供专业的基础类。