1

我有一个自定义MappingJackson2HttpMessageConverter添加到转换器列表的顶部:

 @Override
 public void extendMessageConverters(final List<HttpMessageConverter<?>> converters) {
    converters.add(0, customJacksonMessageConverter());
}

但是,有时我需要跳过这一点并使用 Spring default MappingJackson2HttpMessageConverter,例如当我想通过 Spring Boot Admin 更新应用程序的日志记录级别时。在我的自定义转换器中,我已经覆盖了两者canRead()canWrite()添加了调试日志行以查看返回的值是什么,并且false当我需要跳过时,我可以看到它们都返回。但是,使用默认值解析失败。如果我从列表中删除我的自定义转换器,那么默认值确实有效。

我的转换器列表如下所示:

com.meanwhile.in.hell.converters.json.CustomJacksonMessageConverter
org.springframework.http.converter.ByteArrayHttpMessageConverter
org.springframework.http.converter.StringHttpMessageConverter
org.springframework.http.converter.StringHttpMessageConverter
org.springframework.http.converter.ResourceHttpMessageConverter
org.springframework.http.converter.ResourceRegionHttpMessageConverter
org.springframework.http.converter.xml.SourceHttpMessageConverter
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter
org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter

我不明白为什么如果我的自定义转换器返回falseand canRead()canWrite()它不只是跳过这个并继续向下转换器列表,直到它到达默认的 Spring JSON 转换器。

4

0 回答 0