@Retention(value=RUNTIME) @Target(value=TYPE) @Documented @Import(value=DelegatingWebMvcConfiguration.class) public @interface EnableWebMvc
@Configuration
class imports the Spring MVC
configuration from WebMvcConfigurationSupport
, e.g.:
@Configuration @EnableWebMvc @ComponentScan(basePackageClasses = { MyConfiguration.class }) public class MyWebConfiguration { }
To customize the imported configuration, implement the interface
WebMvcConfigurer
or more likely extend the empty method base class
WebMvcConfigurerAdapter
and override individual methods, e.g.:
@Configuration @EnableWebMvc @ComponentScan(basePackageClasses = { MyConfiguration.class }) public class MyConfiguration extends WebMvcConfigurerAdapter { @Override public void addFormatters(FormatterRegistry formatterRegistry) { formatterRegistry.addConverter(new MyConverter()); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new MyHttpMessageConverter()); } // More overridden methods ... }
If WebMvcConfigurer
does not expose some advanced setting that
needs to be configured, consider removing the @EnableWebMvc
annotation and extending directly from WebMvcConfigurationSupport
or DelegatingWebMvcConfiguration
, e.g.:
@Configuration @ComponentScan(basePackageClasses = { MyConfiguration.class }) public class MyConfiguration extends WebMvcConfigurationSupport { @Override public void addFormatters(FormatterRegistry formatterRegistry) { formatterRegistry.addConverter(new MyConverter()); } @Bean public RequestMappingHandlerAdapter requestMappingHandlerAdapter() { // Create or delegate to "super" to create and // customize properties of RequestMappingHandlerAdapter } }
WebMvcConfigurer
,
WebMvcConfigurerAdapter
,
WebMvcConfigurationSupport
,
DelegatingWebMvcConfiguration