春季4中register-defaults =“false”的等价物是什么?

时间:2014-09-17 02:12:52

标签: java spring spring-mvc

如何配置我的自定义消息转换器,以便在使用Spring 4的无XML项目中拥有 register-defaults="false"

<mvc:annotation-driven register-defaults="false">
  <mvc:message-converters>
    <bean class="myproject.MyCustomHttpMessageConverter"/>
  </mvc:message-converters>
</mvc:annotation-driven>

目前我有Configuration

@Configuration
@EnableWebMvc
@ComponentScan
public class TestDataConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converters.add(converter);
    }
}

谢谢

2 个答案:

答案 0 :(得分:7)

您的Java配置与XML配置中的register-defaults="false"类似。你不需要做任何事情。但是如果你想注册默认值,你必须从WebMvcConfigurationSupport扩展并添加下面代码片段中指定的最后一行。

@Configuration
@EnableWebMvc
@ComponentScan
public class TestDataConfig extends WebMvcConfigurationSupport {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converters.add(converter);
        super.addDefaultHttpMessageConverters(); // Have to call this explicitly to register Default Message Converters.
    }
}

答案 1 :(得分:1)

@shazin写的是真的-第一篇文章中的Java配置等同于XML的register-defaults="false"

但是,据我所知,如果需要获得等效于register-defaults="true"的信息,则可以在extendMessageConverters(List<HttpMessageConverter<?>> converters)中实现WebMvcConfigurer方法(或在{{1 }})-如以下示例所示:

WebMvcConfigurerAdapter