中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~http2的支持(chi)

在 Spring Boot 應用中開(kai)啟 HTTP/2 能(neng)帶來(lai)更好的性能(neng)體驗。下(xia)面我會為(wei)你(ni)解釋如何根(gen)據不同的需求(qiu)進行(xing)配置。首先,用一個表格來(lai)對比(bi)兩種主要的實現方式:

特性 基于 TLS 的 HTTP/2 (h2) 明文 HTTP/2 (h2c)
是否需要證書 ? 是(SSL/TLS 證書) ? 否
協議方案 https http
安全性 高(加密通信) 無(明文通信)
瀏覽器支持 所有主流瀏覽器均支持 不被瀏覽器支持
適用場景 公網網站、對外 API、所有需要瀏覽器訪問的場景 服務器間通信、內部微服務調用、后端 API(客戶端需支持 h2c)

?? 前提條件
在開始之前,請確保(bao)你的開發環境滿(man)足以(yi)下要(yao)求:

  • JDK 版本:JDK 9 或更高版本。
  • Servlet 容器:使用支持 Servlet 4.0 的容器,例如 Tomcat 9+、Undertow 或 Jetty。Spring Boot 2.x 默認帶的 Tomcat 通常已滿足要求。

?? 配置 HTTPS 并啟用 HTTP/2 (h2)

如果你需要為(wei)外(wai)部瀏覽(lan)器提(ti)供服務,這(zhe)是標準做法(fa)。

  1. 生成 SSL 證書
    首先需要一個證書。開發測試可以用 Java keytool 生成自簽名證書:

    keytool -genkey -keyalg RSA -alias mydomain -keystore keystore.jks -storepass yourpassword -validity 365 -keysize 2048
    

    將生成的 keystore.jks 文件復制到項目的 src/main/resources/ 目錄下。

  2. 配置 application.properties/yml
    application.propertiesapplication.yml 中配置 SSL 并啟用 HTTP/2:
    application.yml 示例

    server:
      port: 8443 # HTTPS 默認端口是 443,這里用了 8443
      http2:
        enabled: true # 啟用 HTTP/2
      ssl:
        key-store: classpath:keystore.jks # 證書位置
        key-store-password: yourpassword # 密鑰庫密碼
        key-store-type: JKS # 密鑰庫類型
        key-alias: mydomain # 證書別名
    

    application.properties 示例

    server.port=8443
    server.http2.enabled=true
    server.ssl.key-store=classpath:keystore.jks
    server.ssl.key-store-password=yourpassword
    server.ssl.key-store-type=JKS
    server.ssl.key-alias=mydomain
    
  3. 啟動并驗證
    啟動應用后,用瀏覽器訪問 //localhost:8443/你的端點。在瀏覽器開發者工具的 Network 選項卡中,查看 Protocol 列,通常可以看到 h2(HTTP/2)。

圖片


?? 配置明文 HTTP/2 (h2c)

如果你的(de)應用在內部網絡通信,或者有支持 h2c 的(de)特定客戶端(duan),可以跳過 SSL 步驟。

使用 Tomcat 容器

Spring Boot 默認自帶的 Tomcat 開啟 HTTP/2 必須使用 SSL,所以需要重新啟一個 Tomcat,并修改其配置,使其支持 HTTP/2.0(Spring Boot 支持多 connector)

編程方式配置 Connector
創建一個配置類,添加一個支持 h2c 的 Connector

import org.apache.catalina.connector.Connector;
import org.apache.coyote.http2.Http2Protocol;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class H2cConfig {

    // 指定 h2c 端口,例如 8081
    private int h2cPort = 8081;

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        // 創建支持 HTTP/1.1 的連接器,NIO 模式
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        // 為該連接器添加 HTTP/2 升級協議
        connector.addUpgradeProtocol(new Http2Protocol());
        connector.setPort(h2cPort); // 設置連接器端口
        factory.addAdditionalTomcatConnectors(connector); // 將連接器添加到工廠
        return factory;
    }
}

應用啟動后,原有的主要連接器(如8080)和新的 h2c 連接器(8081)會同時工作。你的服務可以通過 //localhost:8081/你的端點 接受 h2c 請求(qiu)。

使用 Undertow 容器

Undertow 也支持 h2c 和(he) h2。如果使用 Undertow,需(xu)排(pai)除默認的 Tomcat 并引入 Undertow 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

在配置文件中啟用 HTTP/2:server.http2.enabled=true


? 驗證 HTTP/2

  • 瀏覽器 (用于 h2):如上所述,通過開發者工具查看。
  • 命令行工具 (如 curl):新版本 curl 支持 HTTP/2,可用 curl -k -sI --http2 -I //localhost:8081/tools/pay?a=1你的端點 測試 h2,或用 curl --http2-prior-knowledge -I //localhost:8081/tools/pay?a=1 測試 h2c。
  • 程序驗證 (用于 h2c):可以使用 OkHttp 等支持 h2c 的客戶端庫編寫測試代碼。

圖片


?? 重要注意事項

  1. 瀏覽器與 h2c所有主流瀏覽器都不支持明文的 HTTP/2 (h2c)。如果為瀏覽器服務,必須配置 HTTPS (h2)
  2. 生產環境證書:自簽名證書僅用于開發和測試。生產環境應使用受信任的證書頒發機構(CA)簽名的證書(例如通過阿里云、騰訊云等平臺申請免費的或付費的 SSL 證書)。
  3. Spring Boot 版本:上述配置主要針對 Spring Boot 2.x 及更高版本,它們對 HTTP/2 的支持比較完善。對于 Spring Boot 1.5.x,啟用 HTTP/2 通常需要更多的編程配置。
  4. HTTP 壓縮:你可以考慮同時啟用 HTTP 響應壓縮來進一步提升性能:
    server.compression.enabled=true
    server.compression.min-response-size=2048
    server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    
  5. 客戶端支持:確保你的 HTTP 客戶端(如其他服務、移動應用等)也支持你想要使用的協議(h2 或 h2c)。

?? 選擇建議

簡單來說:

  • 如果你的應用是網站或需要瀏覽器訪問,選擇 ?? 配置 HTTPS 并啟用 HTTP/2 (h2)
  • 如果你的應用是內部 API、微服務間通信,且客戶端支持 h2c,選擇 ?? 配置明文 HTTP/2 (h2c) 以簡化部署。

希望這些信息能(neng)幫助你順利(li)地在 Spring Boot 應用中啟(qi)用 HTTP/2。

posted @ 2025-08-26 10:13  張占嶺  閱讀(252)  評論(0)    收藏  舉報