我们将Spring Boot / MVC与基于注释的java-config一起用于一系列RESTful服务,并且我们希望选择性地HTTP GZIP对某些API响应启用流压缩。
RESTful
HTTP GZIP
我知道我可以在控制器和a中手动完成此操作byte[] @ResponseBody,但是我们更希望依赖SpringMVC基础结构(过滤器/等),并使其自动进行JSON转换和压缩(即该方法返回POJO)。
byte[] @ResponseBody
如何在ResponseBody或嵌入式Tomcat实例中启用GZIP压缩,并且以某种方式我们可以选择性地仅压缩某些响应?
谢谢!
PS .:我们目前没有任何基于XML的配置。
这些答案的其余部分已经过时和/或过于复杂,以至于应该是简单的IMO(gzip到现在已经存在多长时间了?比Java更长的时间…)。来自文档:
在application.properties 1.3+中
# server.compression.enabled=true # opt in to content types server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css # not worth the CPU cycles at some point, probably server.compression.min-response-size=10240
在application.properties 1.2.2-<1.3中
server.tomcat.compression=on server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
Older than 1.2.2:
@Component public class TomcatCustomizer implements TomcatConnectorCustomizer { @Override public void customize(Connector connector) { connector.setProperty("compression", "on"); // Add json and xml mime types, as they're not in the mimetype list by default connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml"); } }