Annotation Interface EnableWebMvc
@Retention(RUNTIME)
@Target(TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc
Adding this annotation to an
@Configuration
class imports the Spring MVC
configuration from WebMvcConfigurationSupport
, for example:
@Configuration @EnableWebMvc @ComponentScan(basePackageClasses = MyConfiguration.class) public class MyConfiguration { }
To customize the imported configuration, implement the interface
WebMvcConfigurer
and override individual methods, for example:
@Configuration @EnableWebMvc @ComponentScan(basePackageClasses = MyConfiguration.class) public class MyConfiguration implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry formatterRegistry) { formatterRegistry.addConverter(new MyConverter()); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new MyHttpMessageConverter()); } }
Note: only one @Configuration
class may have the
@EnableWebMvc
annotation to import the Spring Web MVC
configuration. There can however be multiple @Configuration
classes
implementing WebMvcConfigurer
in order to customize the provided
configuration.
If WebMvcConfigurer
does not expose some more advanced setting that
needs to be configured, consider removing the @EnableWebMvc
annotation and extending directly from WebMvcConfigurationSupport
or DelegatingWebMvcConfiguration
, for example:
@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 } }
- Since:
- 3.1
- Author:
- Dave Syer, Rossen Stoyanchev
- See Also: