在传统的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(..);
}
}