gpt4 book ai didi

java - 当我们获取bean时,SpringBoot WebMvcConfigurationSupport没有采用configureMessageConverters

转载 作者:行者123 更新时间:2023-11-30 05:47:18 24 4
gpt4 key购买 nike

WebMvcConfigurationSupport 子类中,我们重写方法 configureMessageConverters

当我们得到一个像 bean 这样的转换器时,

@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());
}

配置加载器没有使用我们的转换器。

但是当我们在方法中声明所有内容时,配置加载器会采用我们的转换器。

@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 - 当我们获取bean时,SpringBoot WebMvcConfigurationSupport没有采用configureMessageConverters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com