Spring Cloud Stream @StreamListener 自定义映射Jackson2MesageConverter
Spring Cloud Stream @StreamListener Custom MappingJackson2MesageConverter
我在我的应用程序中配置了自定义 ObjectMapper
,它具有用于反序列化 Jackson 中的 Guava 提供的不可变类型的自定义模块。
我的问题是我似乎无法覆盖 @StreamListener
使用的 objectMapper
以使其正确反序列化我的对象。
这是我尝试过的:
@Bean
public MessageConverter messageConverter() {
final MappingJackson2MessageConverter mappingJackson2MessageConverter = new MappingJackson2MessageConverter();
mappingJackson2MessageConverter.setObjectMapper(objectMapper);
return mappingJackson2MessageConverter;
}
上面的代码片段在 class 中用 @Configuration
注释并且 objectMapper
在 class:
中定义
public static final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
.registerModule(new GuavaModule());
关于我可能遗漏的任何想法?
- Spring 开机: 1.5.10.RELEASE
- Spring兔子:1.7.6.RELEASE
- Spring 云流: 1.2.2.RELEASE
- Spring 消息传递: 4.3.14.RELEASE
所以,事实证明我的配置没有问题。 MappingJackson2MessageConverter
选择了我的自定义 ObjectMapper
。但是,没有选择消息转换器,因为发送消息时使用了错误的 content-type header.
故事的寓意,小心 Content-Type 并确保它与转换器匹配。
我在我的应用程序中配置了自定义 ObjectMapper
,它具有用于反序列化 Jackson 中的 Guava 提供的不可变类型的自定义模块。
我的问题是我似乎无法覆盖 @StreamListener
使用的 objectMapper
以使其正确反序列化我的对象。
这是我尝试过的:
@Bean
public MessageConverter messageConverter() {
final MappingJackson2MessageConverter mappingJackson2MessageConverter = new MappingJackson2MessageConverter();
mappingJackson2MessageConverter.setObjectMapper(objectMapper);
return mappingJackson2MessageConverter;
}
上面的代码片段在 class 中用 @Configuration
注释并且 objectMapper
在 class:
public static final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
.registerModule(new GuavaModule());
关于我可能遗漏的任何想法?
- Spring 开机: 1.5.10.RELEASE
- Spring兔子:1.7.6.RELEASE
- Spring 云流: 1.2.2.RELEASE
- Spring 消息传递: 4.3.14.RELEASE
所以,事实证明我的配置没有问题。 MappingJackson2MessageConverter
选择了我的自定义 ObjectMapper
。但是,没有选择消息转换器,因为发送消息时使用了错误的 content-type header.
故事的寓意,小心 Content-Type 并确保它与转换器匹配。