在 Spring Boot 中启用带有 Tomcat 的 HTTP2
2022-09-01 00:18:20
Tomcat 8.5是Spring Boot 1.4中的默认设置,它支持HTTP / 2。
如何在 Spring Boot 应用程序中启用 HTTP/2?
Tomcat 8.5是Spring Boot 1.4中的默认设置,它支持HTTP / 2。
如何在 Spring Boot 应用程序中启用 HTTP/2?
在Spring Boot 2.1及更高版本中,就像将此属性添加到.properties(或.yml)文件中一样简单:
server.http2.enabled=true
您也可以像这样以编程方式执行此操作(在您的一个配置类中):
@Bean
public ConfigurableServletWebServerFactory tomcatCustomizer() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(connector -> connector.addUpgradeProtocol(new Http2Protocol()));
return factory;
}
您需要将 HTTP 2 升级协议添加到 Tomcat 的连接器。您可以通过自定义嵌入式 Tomcat 容器来做到这一点:
@Bean
public EmbeddedServletContainerCustomizer tomcatCustomizer() {
return (container) -> {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
((TomcatEmbeddedServletContainerFactory) container)
.addConnectorCustomizers((connector) -> {
connector.addUpgradeProtocol(new Http2Protocol());
});
}
};
}
@Bean
public EmbeddedServletContainerCustomizer tomcatCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
((TomcatEmbeddedServletContainerFactory) container)
.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.addUpgradeProtocol(new Http2Protocol());
}
});
}
}
};
}