Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBoot WebMvcConfigurationSupport没有';当我们进入bean时,不要使用configureMessageConverters_Java_Spring Boot_Spring Mvc_Converters - Fatal编程技术网

Java SpringBoot WebMvcConfigurationSupport没有';当我们进入bean时,不要使用configureMessageConverters

Java SpringBoot WebMvcConfigurationSupport没有';当我们进入bean时,不要使用configureMessageConverters,java,spring-boot,spring-mvc,converters,Java,Spring Boot,Spring Mvc,Converters,在WebMvcConfigurationSupport子类中,我们重写方法configureMessageConverters 当我们得到一个像豆子一样的转换器时 @Bean public HttpMessageConverter mappingJackson2HttpMessageConverter(){ MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpM

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());
}
正常吗?我错过了什么

依赖项::

SpringWebMVC4.3.22.0版本

弹簧罩1.5.19.释放


我找到了一个解决办法。扩展WebMVCConfigureAdapter,并实现extendMessageConverters,清除转换器并仅设置所需的转换器

@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter(){
    MappingJackson2HttpMessageConverter jacksonConverter =
            new MappingJackson2HttpMessageConverter(new EventServiceObjectMapper());

    return jacksonConverter;
}

@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.clear();
    converters.add(new Jaxb2RootElementHttpMessageConverter());
    converters.add(mappingJackson2HttpMessageConverter());
}
@Bean
公共HttpMessageConverter映射Jackson2HttpMessageConverter(){
映射Jackson2HttpMessageConverter jacksonConverter=
新的MappingJackson2HttpMessageConverter(新的EventServiceObjectMapper());
返回插孔转换器;
}
@凌驾

public void extendMessageConverters(列表我一直在与WebMVC和RestAPI斗争。一旦
@EnableWebMvc
,它将覆盖
spring.jackson.
config

我的解决方案是,获取当前
映射Jackson2HttpMessageConverter
,然后定制我想要的

@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));
    }
}
@EnableWebMvc
@配置
公共类WebConfig实现WebMVCConfiguer{
私有对象映射器映射器;
@自动连线//spring.jackson.*ObjectMapper的配置
公共网络配置(ObjectMapper映射器){
this.mapper=mapper;
}
@凌驾

公共无效扩展消息转换器(列表请添加错误StackTrace…不要扩展
WebMvcConfigurationSupport
,而是实现
WebMvcConfigurer
。它们没有错误。我们使用第一个代码,它使用默认的转换器。第二个代码使用我想要的转换器。因此,如果我想使用bean声明转换器,可以通过RestTemplate获得,我无法在方法中使用它来声明控制器的转换器。我扩展了WebMVCConfigureAdapter(相同,然后实现WebMVCConfiguer,无需实现所有方法)现在更强大了。需要一组默认转换器x2和我声明的两个,总共16个。我在更改为WebMvcConfigurationSupport之前所做的初始错误。以及这两个代码的结果。
@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));
    }
}