Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the equivalent of register-defaults="false" in Spring 4?

How can I configure my custom message converter to have register-defaults="false" in a XML-less project with Spring 4?

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

Currently I have this Configuration:

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

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

Thank you

like image 255
Denis C de Azevedo Avatar asked Sep 17 '14 02:09

Denis C de Azevedo


2 Answers

Your Java Configuration as it is, is similar to the one with register-defaults="false" in XML Configuration. You don't need to do anything. But if you want to Register Defaults you would have to extend from WebMvcConfigurationSupport and add the last line specified in the below code snippet.

@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.
    }
}
like image 94
shazin Avatar answered Oct 24 '22 17:10

shazin


It is true, what @shazin has written - that Java configuration from the first post is an equivalent to XML's register-defaults="false".

However, if you need to get an equivalent to register-defaults="true" - as far as i'm aware - you could implement extendMessageConverters(List<HttpMessageConverter<?>> converters) method in WebMvcConfigurer (or override it in WebMvcConfigurerAdapter) - like in an example below:

public class TestDataConfig extends WebMvcConfigurerAdapter {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        // your custom implementation
    }

}
like image 25
michael112 Avatar answered Oct 24 '22 15:10

michael112