Spring 引导:添加新的 Extension-AcceptHeader 映射
Spring Boot: Add new Extension-AcceptHeader mappings
在正常的 Spring 应用程序中,我有:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected Map<String, MediaType> getDefaultMediaTypes() {
Map<String, MediaType> mediaTypes = super.getDefaultMediaTypes();
mediaTypes.put("extension", new MediaType("foo", "bar"));
return mediaTypes;
}
}
所以我可以这样做:
@RequestMapping(produces = "foo/bar")
public void test() { ... }
然后调用:
http://.../myResource.extension
当我使用 Spring 引导执行此操作时,extends WebMvcConfigurationSupport
将阻止所有自动配置。
那么我如何才能轻松地向 Spring 引导注册新的 Extension-Accept-Header 映射?
应该可以,我已经用Boot 1.2验证了代码。1.RELEASE
@Configuration
public class EnableWebMvcConfiguration extends WebMvcAutoConfiguration.EnableWebMvcConfiguration {
@Override
protected Map<String, MediaType> getDefaultMediaTypes() {
Map<String, MediaType> mediaTypes = super.getDefaultMediaTypes();
mediaTypes.put("extension", new MediaType("foo", "bar"));
return mediaTypes;
}
}
根据avi的回答,我们应该使用extends WebMvcAutoConfiguration.EnableWebMvcConfiguration
要添加额外的扩展和媒体类型,覆盖 configureContentNegotiation
:
可能更容易
@Override
protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer
.mediaType("extension", new MediaType("foo", "bar"));
}
在正常的 Spring 应用程序中,我有:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected Map<String, MediaType> getDefaultMediaTypes() {
Map<String, MediaType> mediaTypes = super.getDefaultMediaTypes();
mediaTypes.put("extension", new MediaType("foo", "bar"));
return mediaTypes;
}
}
所以我可以这样做:
@RequestMapping(produces = "foo/bar")
public void test() { ... }
然后调用:
http://.../myResource.extension
当我使用 Spring 引导执行此操作时,extends WebMvcConfigurationSupport
将阻止所有自动配置。
那么我如何才能轻松地向 Spring 引导注册新的 Extension-Accept-Header 映射?
应该可以,我已经用Boot 1.2验证了代码。1.RELEASE
@Configuration
public class EnableWebMvcConfiguration extends WebMvcAutoConfiguration.EnableWebMvcConfiguration {
@Override
protected Map<String, MediaType> getDefaultMediaTypes() {
Map<String, MediaType> mediaTypes = super.getDefaultMediaTypes();
mediaTypes.put("extension", new MediaType("foo", "bar"));
return mediaTypes;
}
}
根据avi的回答,我们应该使用extends WebMvcAutoConfiguration.EnableWebMvcConfiguration
要添加额外的扩展和媒体类型,覆盖 configureContentNegotiation
:
@Override
protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer
.mediaType("extension", new MediaType("foo", "bar"));
}