spring-boot - 自定义 MessageConverter 在 Spring Boot 中不起作用
问题描述
我想MessageConverter
在 Spring Boot 中注册一个自定义项,以便更好地控制消息的转换方式。我有一个 Spring Boot 2.1.7 Webflux 应用程序。
我创建了我的自定义转换器:
public class CustomConverter extends MappingJackson2HttpMessageConverter {
...
}
并注册:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
return new CustomConverter();
}
我还确认它是通过自动装配注册的,HttpMessageConverters
并确认它在转换器列表中。然后我实现了一些我期望被调用的方法,例如canRead
, canWrite
, readInternal
,writeInternal
并在它们上放置断点。我的应用程序公开了一个使用 JSON 响应的 Rest 端点,还调用了一个外部 Rest 服务,该服务 POST 一个 JSON 有效负载并接收 JSON 作为回报。
在任何时候我都看不到我的转换器正在被使用。我什至删除了所有其他转换器,只留下我自己的,但它仍然没有被调用。
我错过了什么吗?
解决方案
在我的 WebFlux 应用程序中,我必须执行以下操作才能使其正常工作:
@Bean
public WebFluxConfigurer webFluxConfigurer(){
return new WebFluxConfigurer() {
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.registerDefaults(false);
configurer.customCodecs().encoder(new CustomEncoder());
configurer.customCodecs().decoder(new CustomDecoder());
}
};
}
推荐阅读
- java - 标准化 UTC 日期
- java - 安卓。从外部文件夹读取数据库
- amazon-web-services - 将非活动用户迁移到 aws cognito
- python-3.x - 写入某个可移动目录的程序 (Windows)
- javascript - amCharts - 通过 HTML 元素或 id 获取图表对象?
- java - 非法字符 - 如果您需要对完整的 ASCII 字符集进行编码,请尝试使用扩展模式
- swift - 如何在 Swift 中实现“抽象”属性初始化器
- file - 系统未授权访问异常 UWP Access to path is denied
- php - sql中如何统计不同用户的元素
- php - PHP 脚本在 max_execution_time 之后没有中止(XAMPP,XDebug)