Spring Boot中的WebMvcConfigurationSupport替代品是什么



在传统的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应用程序中做到这一点?我的理解是,在@EnableWebMvc中添加WebMvcConfigurationSupport将禁用Spring Boot WebMvc自动配置,这是我不想要的。

关于自动配置和Spring MVC的每个Spring Boot参考:

如果你想完全控制SpringMVC,你可以添加自己的@Configuration,并用@EnableWebMvc进行注释。如果你想保留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(..);
   }
}

从Spring 5.0开始,您可以使用接口WebMvcConfigurer,因为Java 8允许在接口上进行默认实现。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
   ...
   @Override
   public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
      configurer.favorParameter(..);
      ...
      configurer.defaultContentType(..);
   }
}

相关内容

  • 没有找到相关文章

最新更新