什么是Spring Boot中的WebMvcConfigurationSupport替换?

时间:2016-05-10 05:58:18

标签: spring-mvc spring-boot content-negotiation

在传统的Spring MVC中,我可以扩展WebMvcConfigurationSupport并执行以下操作:

@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.favorPathExtension(false).
    favorParameter(true).
    defaultContentType(MediaType.APPLICATION_JSON).
    mediaType("xml", MediaType.APPLICATION_XML);
}

如何在Spring Boot应用程序中执行此操作?我的理解是,添加WebMvcConfigurationSupport @EnableWebMvc将禁用Spring Boot WebMvc自动配置,这是我不想要的。

1 个答案:

答案 0 :(得分:8)

auto configuration and Spring MVC上的每个Spring引导参考:

  

如果您想完全控制Spring MVC,可以使用@EnableWebMvc添加自己的@Configuration注释。如果你想保留Spring Boot MVC功能,并且你只想添加额外的MVC配置(拦截器,格式化器,视图控制器等),你可以添加自己的@Bean类型为WebMvcConfigurerAdapter,但没有@EnableWebMvc。

例如,如果您想保留Spring Boot的自动配置,并自定义ContentNegotiationConfigurer:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

   ...
   @Override
   public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
      super.configureContentNegotiation(configurer);
      configurer.favorParameter(..);
      ...
      configurer.defaultContentType(..);
   }
}