提交 9b44f1a3 编写于 作者: dallascao's avatar dallascao

change translation of 'transformers'

上级 b435f396
......@@ -2,7 +2,7 @@
## [](#messaging-transformation-chapter)消息转换
### [](#transformer)变压
### [](#transformer)转换
消息转换器在实现消息生产者和消息消费者之间的松耦合方面发挥着非常重要的作用。你可以在这些组件之间添加转换器,而不是要求每个产生消息的组件都知道下一个使用者期望的类型。通用的转换器,例如将`String`转换为 XML 文档的转换器,也是高度可重用的。
......@@ -36,13 +36,13 @@
| |如果`ref`属性引用扩展`AbstractMessageProducingHandler`的 Bean(例如框架本身提供的转换器),则通过将输出通道直接注入处理程序来优化配置。,在这种情况下,<br/>,每个`ref`必须是一个单独的 Bean 实例(或者`prototype`-作用域 Bean),或者使用内部的`<bean/>`配置类型。<br/>如果你不小心从多个 bean 引用了相同的消息处理程序,则会出现配置异常。|
|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
当使用 POJO 时,用于转换的方法可能期望入站消息的`Message`类型或有效负载类型。它还可以通过分别使用`@Header``@Headers`参数注释来单独或作为完整映射接受消息头值。方法的返回值可以是任何类型。如果返回值本身是`Message`,则将其传递到变压器的输出通道。
当使用 POJO 时,用于转换的方法可能期望入站消息的`Message`类型或有效负载类型。它还可以通过分别使用`@Header``@Headers`参数注释来单独或作为完整映射接受消息头值。方法的返回值可以是任何类型。如果返回值本身是`Message`,则将其传递到转换器的输出通道。
在 Spring Integration2.0 中,消息转换器的转换方法不再能够返回`null`。返回`null`将导致一个异常,因为消息转换器应该始终被期望将每个源消息转换为有效的目标消息。换句话说,消息转换器不应该被用作消息过滤器,因为它有一个专用的`<filter>`选项。但是,如果你确实需要这种类型的行为(其中组件可能会返回`null`,这不应被视为错误),则可以使用服务激活器。其`requires-reply`值默认为`false`,但可以设置为`true`,以便为`null`抛出异常返回值,就像转换器一样。
#### [](#transformers-and-spring-expression-language-spel)变形金刚与 Spring 表达式语言
#### [](#transformers-and-spring-expression-language-spel)转换器与 Spring 表达式语言
与路由器、聚合器和其他组件一样,在 Spring Integration2.0 中,只要转换逻辑相对简单,变压器也可以从[SPEL 支持](https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions)中受益。下面的示例展示了如何使用 SPEL 表达式:
与路由器、聚合器和其他组件一样,在 Spring Integration2.0 中,只要转换逻辑相对简单,转换器也可以从[SPEL 支持](https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions)中受益。下面的示例展示了如何使用 SPEL 表达式:
```
<int:transformer input-channel="inChannel"
......@@ -52,9 +52,9 @@
前面的示例在不编写自定义转换器的情况下转换有效负载。我们的有效负载(假定为`String`)是上层的,与当前的时间戳连接在一起,并应用了一些格式。
#### [](#common-transformers)通用变压
#### [](#common-transformers)通用转换
Spring 集成提供了一些变压器实现方式。
Spring 集成提供了一些转换器实现方式。
##### [](#object-to-string-transformer)对象到字符串转换器
......@@ -84,7 +84,7 @@ Spring 集成提供了一些变压器实现方式。
| |当反序列化来自不受信任的源的数据时,你应该考虑添加一个`allow-list`的包和类模式。<br/>默认情况下,所有类都是反序列化的。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
##### [](#object-to-map-and-map-to-object-transformers)`Object`-to-`Map`和`Map`-to-`Object`变形金刚
##### [](#object-to-map-and-map-to-object-transformers)`Object`-to-`Map`和`Map`-to-`Object`转换器
Spring 集成还提供了`Object`-to-`Map``Map`-to-`Object`转换器,它们使用 JSON 序列化和反序列化对象图。对象层次结构被内省到最原始的类型(`String``int`,等等)。这种类型的路径是用 SPEL 描述的,它在转换的`Map`中成为`key`。原语类型成为值。
......@@ -184,7 +184,7 @@ Spring 集成为映射到对象提供了名称空间支持,如下例所示:
| |“ref”和“type”属性是互斥的。<br/>此外,如果使用“ref”属性,则必须指向 Bean 范围内的“prototype”。<br/>否则,将抛出一个`BeanCreationException`。|
|---|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
从版本 5.0 开始,你可以为`ObjectToMapTransformer`提供自定义的`JsonObjectMapper`——当你需要为空集合的日期或空集合(以及其他用途)提供特殊格式时。有关`JsonObjectMapper`实现的更多信息,请参见[JSON 变形金刚](#json-transformers)
从版本 5.0 开始,你可以为`ObjectToMapTransformer`提供自定义的`JsonObjectMapper`——当你需要为空集合的日期或空集合(以及其他用途)提供特殊格式时。有关`JsonObjectMapper`实现的更多信息,请参见[JSON 转换器](#json-transformers)
##### [](#stream-transformer)流转换器
......@@ -215,7 +215,7 @@ public StreamTransformer streamToString() {
}
```
##### [](#json-transformers)JSON 变形金刚
##### [](#json-transformers)JSON 转换器
Spring 集成提供了对象到 JSON 和 JSON 到对象转换器。以下两个示例展示了如何用 XML 声明它们:
......@@ -341,7 +341,7 @@ Order generateOrder(String productId, @Header("customerName") String customer) {
正如你所看到的,头过滤器的配置非常简单。它是一个典型的端点,具有输入和输出通道以及`header-names`属性。该属性接受需要删除的标头的名称(如果有多个标头,则用逗号分隔)。因此,在前面的示例中,出站消息中不存在名为“lastname”和“state”的头。
#### [](#codec-based-transformers)基于编解码器的变压
#### [](#codec-based-transformers)基于编解码器的转换
[Codec](./codec.html#codec)
......@@ -549,7 +549,7 @@ Spring 集成 2.1 引入了有效负载 Enricher。有效负载 Enricher 定义
如果只需要用静态值来丰富有效负载,则不需要提供`request-channel`属性。
| |增强器是变压器的一种变体。<br/>在许多情况下,你可以使用有效负载 Enricher 或通用 Transformer 实现来向消息有效负载添加额外的数据。<br/>你应该熟悉 Spring Integration 提供的所有具有转换能力的组件,并仔细选择语义上最适合你的业务用例的实现。|
| |增强器是转换器的一种变体。<br/>在许多情况下,你可以使用有效负载 Enricher 或通用 Transformer 实现来向消息有效负载添加额外的数据。<br/>你应该熟悉 Spring Integration 提供的所有具有转换能力的组件,并仔细选择语义上最适合你的业务用例的实现。|
|---|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
##### [](#payload-enricher-configuration)配置
......@@ -665,15 +665,15 @@ Spring 集成 2.1 引入了有效负载 Enricher。有效负载 Enricher 定义
[存储在图书馆中](https://www.enterpriseintegrationpatterns.com/StoreInLibrary.html)(或 ClaimCheck)模式描述了一种机制,该机制允许你将数据存储在一个众所周知的位置,同时仅维护指向该数据所在位置的指针(ClaimCheck)。你可以将该指针作为新消息的有效负载传递,从而让消息流中的任何组件在需要时立即获得实际数据。这种方法非常类似于认证邮件流程,即你在邮箱中收到一张索赔支票,然后必须去邮局领取你的实际包裹。这也是同样的想法后,在飞机上或在酒店提取行李。
Spring 集成提供了两种类型的索赔检查变压器:
Spring 集成提供了两种类型的索赔检查转换器:
* 进站索赔检查变压
* 进站索赔检查转换
* 出口索赔检查变压
* 出口索赔检查转换
可以使用方便的基于名称空间的机制来配置它们。
#### [](#claim-check-in)进件索赔检查变压
#### [](#claim-check-in)进件索赔检查转换
传入的索赔检查转换器通过将传入的消息存储在其`message-store`属性标识的消息存储区中来转换该消息。以下示例定义了传入的索赔检查转换器:
......@@ -688,7 +688,7 @@ Spring 集成提供了两种类型的索赔检查变压器:
现在,假设在某个时刻你确实需要访问实际的消息。你可以手动访问消息存储区并获取消息的内容,或者可以使用相同的方法(创建一个转换器),但现在你可以使用一个传出的 ClaimCheck 转换器将 ClaimCheck 转换为实际的消息。
下面的清单提供了传入的索赔检查变压器的所有可用参数的概述:
下面的清单提供了传入的索赔检查转换器的所有可用参数的概述:
```
<int:claim-check-in auto-startup="true" (1)
......@@ -712,7 +712,7 @@ Spring 集成提供了两种类型的索赔检查变压器:
|**7**|指定向输出通道发送回复消息时等待的最长时间(以毫秒为单位)。<br/>默认为`-1`—无限期地阻塞。<br/>此属性在`Chain`元素内不可用。<br/>可选。|
|**8**|定义一个 poller。<br/>这个元素在`Chain`元素中是不可用的。<br/>可选的。|
#### [](#claim-check-out)出口索赔检查变压
#### [](#claim-check-out)出口索赔检查转换
一个传出的索赔检查转换器允许你将具有索赔检查有效负载的消息转换为具有原始内容作为其有效负载的消息。
......@@ -725,7 +725,7 @@ Spring 集成提供了两种类型的索赔检查变压器:
在前面的配置中,在`input-channel`上收到的消息应该有一个索赔检查作为其有效负载。出站索赔检查转换器通过在消息存储中查询由提供的索赔检查标识的消息,将其转换为带有原始有效负载的消息。然后,它将新签出的消息发送到`output-channel`
下面的清单提供了即将发出的索赔检查变压器的所有可用参数的概述:
下面的清单提供了即将发出的索赔检查转换器的所有可用参数的概述:
```
<int:claim-check-out auto-startup="true" (1)
......@@ -807,7 +807,7 @@ Spring 集成的 4.2 版本引入了`Codec`抽象。编解码器对`byte[]`之
目前,这是`Codec`的唯一实现,并且它提供了两种`Codec`:
* `PojoCodec`:用于变压
* `PojoCodec`:用于转换
* `MessageCodec`:用于`CodecMessageConverter`
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册