1. 程式人生 > >Spring Boot 學習筆記(五) 配置Servlet容器

Spring Boot 學習筆記(五) 配置Servlet容器

Tomcat配置

因為Spring Boot預設內嵌的Tomcat為servlet容器,所以這裡針對Tomcat配置作詳細介紹,其實本節的配置對Tomcat、Jetty和Undertow都是通用的。

配置Tomcat:

關於Tomcat的所有屬性都在org.springframework.boot.autoconfigure.web.ServerProperties配置類中做了定義,我們只需要在application.properties配置屬性 做配置即可。

通用的Servlet容器配置以”server”作為字首
Tomcat特有配置都以”server.tomcat”作為字首。

這裡寫圖片描述

更多的相關配置:

servlet容器:

這裡寫圖片描述
這裡寫圖片描述

Tomcat:

這裡寫圖片描述
這裡寫圖片描述

程式碼配置Tomcat

如果需要通過程式碼的方式配置servlet容器,則可以註冊一個實現EmbeddedServletContainerCustomizer介面的Bean

如果想直接配置Tomcat、Jetty、Undertow:
則直接定義TomcatEmbeddedServletContainerFactory、JettyEmbbedServletContainerFactory、UndertowEmbeddedServletContainerFactory。

一、通用配置:

(1)新建類的配置

這裡寫圖片描述

(2)當前配置檔案內配置。若要在當前已有的配置檔案內新增類的Bean的話,則在Spring配置中,注意當前類要宣告為static

這裡寫圖片描述

二、特定配置:
以Tomcat為例(Jetty使用JettyEmbeddedServletContainerFactory,Undertow使用UndertowEmbeddedServletContainerFactory)

這裡寫圖片描述

替換Tomcat:

只需要把相應的servlet容器的依賴替換,就會自動配置相應的servlet

Tomcat: spring-boot-starter-tomcat

Jetty: spring-boot-starter-Jetty

Undertow: spring-boot-starter-undertow

SSL配置

SSL(Secure Sockets Layer,安全套接層)是為網路通訊提供安全及資料完整性的一種安全協議,SSL在網路傳輸層對網路連線進行加密。

SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。

SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol),他建立在可靠的傳輸協議之上(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。

SSL握手協議(SSL Handshake Protocol),建立在SSL記錄協議之上,用於在實際資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。

而在基於B/S的Web應用中,是通過HTTPS來實現SSL的。HTTPS是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即在HTTP下加入SSL層,HTTPS的安全基礎是SSL。

1、生成證書

使用SSL首先需要一個證書,這個證書既可以是自簽名的,也可以是從SSL證書授權中心獲取的。

這裡為了方便,演示自授權證書的生成:

每一個JDK或者JRE裡都有一個工具叫keytool,它是一個證書管理工具,可以用來生成自簽名的證書。

這裡寫圖片描述

配置好環境變數之後,在控制檯輸入:

keytool -genkey -alias tomcat(因為Spring Boot預設內嵌Tomcat容器)

這裡寫圖片描述

等全部輸入完之後我們在當前目錄下生成了一個.keystore檔案,這就是我們要用的證書檔案:

這裡寫圖片描述

2、Spring Boot配置SSL

新增一個index.html到src/main/resources/static下,作為測試。

將.keystore檔案複製到專案的根目錄,然後在application.properties中做如下SSL的設定:

這裡寫圖片描述

之後做上面講的特定配置,指定埠號和會話時間:

這裡寫圖片描述

執行之後,發現列印資訊如下:

這裡寫圖片描述

說明證書,配置檔案都配置成功。

這裡寫圖片描述

http轉向https:

很多時候我們在位址列輸入的是http,但是會自動轉向到https,要實現這個功能,我們需要配置TomcatEmbeddedServletContainerFactory,並且新增Tomcat的connector來實現。

這裡寫圖片描述

此時啟動Spring Boot,控制檯輸出效果:

這裡寫圖片描述

會發現Http已經被重定向。

Favicon配置

Spring Boot提供了一個預設的Favicon,每次訪問應用的時候都能看到:

這裡寫圖片描述

關閉Favicon

可以在application.properties中設定關閉Favicon,預設為開啟

spring.mvc.favicon.enabled=false

設定自己的Favicon

如果需要設定自己的Favicon,只需要將自己的favicon.ico(檔名不能變動)檔案放置在類路徑根目錄、類路徑META-INF/resources/下、類路徑resources/下、類路徑static/下或類路徑public下。

這裡將favicon.ico放置在src/main/resources/static下:

然後正常訪問即可。