1

在一个普通的 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 映射?

4

2 回答 2

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;
    }
}
于 2015-02-13T13:56:37.090 回答
1

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

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

@Override
protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer
        .mediaType("extension", new MediaType("foo", "bar"));
}
于 2015-02-13T20:42:58.257 回答