Spring Boot:添加新的Extension-AcceptHeader映射

时间:2015-02-13 13:05:05

标签: spring spring-mvc spring-boot http-accept-header

在普通的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 Boot执行此操作时,extends WebMvcConfigurationSupport将阻止所有自动配置。

那么如何轻松地使用Spring Boot注册新的Extension-Accept-Header映射?

2 个答案:

答案 0 :(得分:2)

这应该这样做,我已经使用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;
    }
}

答案 1 :(得分:1)

根据avi的回答,我们应该使用extends WebMvcAutoConfiguration.EnableWebMvcConfiguration

要添加其他扩展程序和媒体类型,可能更容易覆盖configureContentNegotiation

@Override
protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer
        .mediaType("extension", new MediaType("foo", "bar"));
}