自定义 MessageConverter 在 Spring Boot 中不起作用

ath*_*hom 1 spring-boot spring-webflux

我想MessageConverter在 Spring Boot 中注册一个自定义,让我更好地控制消息的转换方式。我有一个 Spring Boot 2.1.7 Webflux 应用程序。

我创建了我的自定义转换器:

public class CustomConverter extends MappingJackson2HttpMessageConverter {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并将其注册为:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
    return new CustomConverter();
}
Run Code Online (Sandbox Code Playgroud)

我还确认它是通过自动装配注册的,HttpMessageConverters并确认它在转换器列表中。然后,我实现了一些方法,我期待着这样调用canReadcanWritereadInternalwriteInternal他们并把断点。我的应用程序公开了一个 Rest 端点,该端点以 JSON 响应,并调用一个外部 Rest 服务,该服务发布 JSON 有效负载并接收 JSON 作为回报。

我在任何时候都看不到我的转换器正在被使用。我什至删除了所有其他转换器,只留下我自己的转换器,但仍然没有被调用。

我错过了什么吗?

ath*_*hom 5

在我的 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());
        }
    };

}
Run Code Online (Sandbox Code Playgroud)