org.springframework.web.servlet.config.annotation

Annotation Type EnableWebMvc



  • @Retention(value=RUNTIME)
     @Target(value=TYPE)
     @Documented
     @Import(value=DelegatingWebMvcConfiguration.class)
    public @interface EnableWebMvc
    Adding this annotation to an @Configuration class imports the Spring MVC configuration from WebMvcConfigurationSupport, e.g.:
     @Configuration
     @EnableWebMvc
     @ComponentScan(basePackageClasses = MyConfiguration.class)
     public class MyConfiguration {
    
     }
     

    To customize the imported configuration, implement the interface WebMvcConfigurer and override individual methods, e.g.:

     @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, 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
               }
     }
     
    Since:
    3.1
    Author:
    Dave Syer, Rossen Stoyanchev
    See Also:
    WebMvcConfigurer, WebMvcConfigurationSupport, DelegatingWebMvcConfiguration