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"));
}