java - 当我们进入 bean 时,SpringBoot WebMvcConfigurationSupport 没有使用 configureMessageConverters
问题描述
在WebMvcConfigurationSupport
子类中,我们覆盖了方法configureMessageConverters
。
当我们得到一个像豆子一样的转换器时,
@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter jacksonConverter =
new MappingJackson2HttpMessageConverter(new EventServiceObjectMapper());
return jacksonConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new Jaxb2RootElementHttpMessageConverter());
converters.add(mappingJackson2HttpMessageConverter());
}
configuration-loader
没有带我们的转换器。
但是,当我们在方法中声明 all 时,configuration-loader
会使用我们的转换器。
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new Jaxb2RootElementHttpMessageConverter());
converters.add(new MappingJackson2HttpMessageConverter(new EventServiceObjectMapper()));
}
这是正常的?我想念什么?
依赖::
Spring webmvc 4.3.22.RELEASE
SpringBoot 1.5.19.RELEASE
解决方案
我在 WebMVC 和 RestAPI 上苦苦挣扎。一旦@EnableWebMvc
,它将覆盖spring.jackson.*
配置。
我的解决方案,获取MappingJackson2HttpMessageConverter
我想要的最新和自定义它。
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
private ObjectMapper mapper;
@Autowired // spring.jackson.* ObjectMapper's config
public WebConfig(ObjectMapper mapper) {
this.mapper = mapper;
}
@Override
public void extendMessageConverters (List<HttpMessageConverter<?>> converters) {
converters.stream()
.filter(x -> x instanceof MappingJackson2HttpMessageConverter)
.forEach(x -> ((MappingJackson2HttpMessageConverter) x).setObjectMapper(mapper));
}
}
推荐阅读
- java - JDBC MySql驱动长时间工作返回错误值
- java - Spring Security 甚至返回 401 permitAll()
- python - 描述符装饰器究竟是如何被调用的?
- asp.net - 如何从视图调用我自己的 API?ASP.NET MVC
- javascript - Javascript 正则表达式来捕获括号之间的每一个可能的数学运算
- javascript - 服务器发送事件 + Asp Core,为什么我不能让它工作?
- javascript - 通过 id 和 jquery 引用附加的 HTML 代码
- c# - 在 .NET Core 3.1 中使用 EC (ECDH_ES_A256KW, A256GCM) 进行 JWE 加密/解密
- dialogflow-es - 从主对话框访问后续意图
- python - 在 Windows 10 上检测 USB 输入设备的插入/移除