江帥帥:精通 Spring Boot 系列 03
1. 關閉指定的自動配置
透過上面的 @EnableAutoConfiguration 註解就能根據指定的依賴,自動進行配置。但如果你想關閉某一項自動配置,就需要使用 @SpringBootApplication 下的 exclude 引數來設定。比如,我想關閉 DataSource,程式碼具體如下:
1
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
2. 自定義啟動 banner
能滿足企業定製 logo 或專案啟動圖案。比如,可以藉助如下幾個網站來生成:
1
2
3
生成之後,直接將複製好的圖案,放到新建的 banner.txt 檔案中。執行程式之後,具體顯示效果如下:
3. 全域性配置檔案
一般使用 application.properties 或者 application.yml 檔案來當作全域性配置檔案。它能被新增在下面幾個目錄下,區別是載入的順序是不同的,具體如下:
1專案根目錄的 /
config 目錄下
2專案根目錄下
3類路徑的 /
config 目錄下
4類路徑下
比如,可以在 application.properties 配置檔案中,設定埠、請求字尾等內容。具體的配置引數可以參考官網文件第 10 章 Appendices:
4. 配置 Web 容器
在 Spring Boot 應用中,可以內建 Tomcat、Netty、Jetty 等容器。
1)配置 Tomcat
如果新增了 spring-boot-starter-web 依賴,則專案會預設使用 Tomcat 作為 Web 容器。
針對 Tomcat 可以新增一些配置,具體配置如下:
1# 埠
2server.port=80
3# 錯誤跳轉路徑
4server.error.path
5# session 失效時間
6server.servlet.session.timeout
7# 專案名稱
8server.servlet.context-path
9# 編碼,一般 utf-8
10server.tomcat.uri-encoding=utf-8
11# ...
2)配置 Jetty
在 Spring Boot 應用中嵌入 Jetty 的配置很簡單,把 spring-boot-starter-web 中的 Tomcat 改成 Jetty 即可,具體配置如下:
1
2
<
dependency>
3
<
groupId>org.springframework.boot
</
groupId>
4
<
artifactId>spring-boot-starter-web
</
artifactId>
5
<
exclusions>
6
<
exclusion>
7
<
groupId>org.springframework.boot
</
groupId>
8
<
artifactId>spring-boot-starter-tomcat
</
artifactId>
9
</
exclusion>
10
</
exclusions>
11
</
dependency>
12
13
14
<
dependency>
15
<
groupId>org.springframework.boot
</
groupId>
16
<
artifactId>spring-boot-starter-jetty
</
artifactId>
17
</
dependency>
3)配置 Undertow
Undertow 是紅帽公司開發的一款基於 NIO 的高效能 Web 嵌入式伺服器,擁有非常好的效能。配置方式具體如下:
1
2
<
dependency>
3
<
groupId>org.springframework.boot
</
groupId>
4
<
artifactId>spring-boot-starter-web
</
artifactId>
5
<
exclusions>
6
<
exclusion>
7
<
groupId>org.springframework.boot
</
groupId>
8
<
artifactId>spring-boot-starter-tomcat
</
artifactId>
9
</
exclusion>
10
</
exclusions>
11
</
dependency>
12
13
14
<
dependency>
15
<
groupId>org.springframework.boot
</
groupId>
16
<
artifactId>spring-boot-starter-undertow
</
artifactId>
17
</
dependency>
5. HTTPS 配置
使用 JDK 提供的 keytool 工具,可以生成一個數字證照,具體命令如下:
1keytool -genkey -
alias httpskey -keyalg RSA -keysize 2048 -keystore hello.p12 -validity 365
-
-genkey 表示建立一個金鑰
-
-alias httpskey 設定金鑰的別名
-
-keyalg RSA 表示使用的加密演算法是 RSA
-
-keysize 2048 設定金鑰的長度
-
-keystore hello.p12 設定金鑰存放位置
-
-validity 365 設定金鑰的有效時間
然後在 application.properties 檔案中編輯,具體配置如下:
1server.ssl.key-store=hello.p12
2server.ssl.key-alias=httpskey
3server.ssl.key-store-password=123456
6. 型別安全配置
前面也說過,我們的配置檔案可以使用 properties 配置和 yaml 配置,專案啟動後,它們都會被載入到 Spring 的環境中,如果你要用配置資訊的話,直接使用 @Value 註解即可。
但資料注入到屬性中,需要注意安全。Spring Boot 使用型別安全配置屬性,即使在資料量非常龐大的情況下,將配置檔案中的資料注入到 Bean 裡也是很方便的。
1user.name=翠花
2user.age=18
3user.address=北京
新增對應的 Bean 類,使用
@ConfigurationProperties
註解來使用配置,透過
prefix 屬性
來描述要載入的配置檔案的字首,具體如下:
1
@Component
2
@ConfigurationProperties(prefix=
"user")
3
public
class
User {
4
private String name;
5
private Integer age;
6
private String address;
7
// get 和 set 方法...
8}
7. YAML 配置
YAML 是專門用來寫配置檔案的語言,非常簡潔、強大,類似 JSON。它可用來替換 application.properties 檔案。YAML 主要是由 spring-boot-starter-web 依賴模組中的 snakeyaml 依賴進行解析。但它不能使用
@propertySource
註解載入 YAML 檔案,否則還要使用 Properties 配置。
舉個小案例,具體寫法如下:
1server:
2 port:80
3 servlet:
4 context-path:/hello
5 tomcat:
6 uri-encoding:utf-8
還可以自定義配置,具體寫法如下:
1user:
2 name:翠花
3 age:18
對應的程式碼,跟前面的 User 類一樣,具體原始碼如下:
1
@Component
2
@ConfigurationProperties(prefix=
"user")
3
public
class
User {
4
private String name;
5
private Integer age;
6
// get 和 set 方法...
7}
還能設定成集合的樣式,集合中是單個值,具體寫法如下:
1user:
2 name:翠花
3 age:18
4 aihao:
5 - 燙頭
6 - 捏腳
7 - Reading
對應的程式碼,具體原始碼如下:
1
@Component
2
@ConfigurationProperties(prefix=
"user")
3
public
class
User {
4
private String name;
5
private Integer age;
6
private List<String> aihao;
7
// get 和 set 方法...
8}
也能先設定成集合的樣式,但集合中是物件,具體寫法如下:
1shop:
2 users:
3 - name:翠花
4 age:18
5 aihao:
6 - 燙頭
7 - 捏腳
8 - Reading
9 - name:小強
10 age:18
11 aihao:
12 - 燙頭
13 - 捏腳
14 - Reading
對應的程式碼,具體原始碼如下:
1
@Component
2
@ConfigurationProperties(prefix=
"shop")
3
public
class
Users {
4
private List<User> users;
5
// get 和 set 方法...
6}
1
public
class
User {
2
private String name;
3
private Integer age;
4
private List<String> aihao;
5
// get 和 set 方法...
6}
8. Profile 配置
如果我們在專案中,需要頻繁在開發環境、測試環境和生產環境中更改大量的配置,會讓你懷疑人生,所以我們使用 @Profile 註解來更加簡潔進行處理。
具體的命名規則:application-{xxx}.properties,這樣就能在不同環境下進行區別配置資訊。具體使用步驟如下:
第一步,新增配置檔案
在 resources 目錄中,建立 application-dev.properties 和 application-prod.properties 檔案,代表開發和生產環境中的配置。
1# 開發環境
2server.port=8080
1# 生產環境
2server.port=80
第二步,指定對應模式
1)在 application.properties 中指定
1# 開發時用 dev,生產時用 prod
2spring.profiles.active=dev
2)在啟動類 main 方法中指定
1SpringApplicationBuilder builder =
new SpringApplicationBuilder(SpringBootApp.class);
2
3builder.application().setAdditionalProfiles(
"prod");
4
5builder.run(args);
3)也可以在專案啟動時配置
在我們將專案打成 jar 檔案再啟動,具體的操作命令如下:
1java -jar springdemo-xxx.jar --spring.profiles.active=prod
來源於:奈學開發者社群-江帥帥
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976011/viewspace-2698721/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 江帥帥:精通 Spring Boot 系列 01Spring Boot
- 江帥帥:精通 Spring Boot 系列 02Spring Boot
- 江帥帥:精通 Spring Boot 系列 04Spring Boot
- 江帥帥:精通 Spring Boot 系列 05Spring Boot
- 江帥帥:精通 Spring Boot 系列 06Spring Boot
- 艦隊統帥
- 蘇嵌/楊帥/0711
- 蘇嵌//楊帥/2018.7.10
- L1-020 帥到沒朋友
- 帥初的“羅生門”漩渦
- 王廣帥IM工程執行記錄
- Spring Boot系列十九 Spring boot整合 swaggerSpring BootSwagger
- Linux安裝Nginx 作者:哇塞大嘴好帥LinuxNginx
- 超帥氣的網站-我愛冷笑話網站
- Spring Boot系列(一):Spring Boot快速開始Spring Boot
- Spring Boot系列(四):Spring Boot原始碼解析Spring Boot原始碼
- Spring Boot系列(一):Spring Boot 入門篇Spring Boot
- Spring Boot2 系列教程(三)理解 Spring BootSpring Boot
- 可能輕微捯飭下,IT 男就能變帥了
- L1-020 帥到沒朋友 分數 20
- 換一個帥一點姿勢實現DexHunter
- 逝去的 2020,帥地期待過,也曾迷茫過...
- 這樣寫程式碼,真是帥到沒有朋友
- Spring Boot系列(三):Spring Boot整合Mybatis原始碼解析Spring BootMyBatis原始碼
- 酷帥吊炸天的 Pandas 常用操作命令彙總
- WFee路由器近日流出諜照,外形帥到沒朋友!路由器
- 手撕redis分散式鎖,隔壁張小帥都看懂了!Redis分散式
- 技術向上,雪坡向下:拼多多的“新帥”與新路
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- Spring Boot系列(四) Spring Cloud 之 Config ClientSpring BootCloudclient
- 史丹佛AI實驗室換帥!Christopher Manning接替李飛飛AI
- Spring Boot系列筆記--整合RedisSpring Boot筆記Redis
- Spring Boot乾貨系列:(十三)Spring Boot全域性異常處理整理Spring Boot
- Spring Boot系列十七 Spring Boot 整合 websocket,使用RabbitMQ做為訊息代理Spring BootWebMQ
- Spring Boot系列十六 WebSocket簡介和spring boot整合簡單訊息代理Spring BootWeb
- 跟我學Spring Cloud(Finchley版)-03-監控:強大的Spring Boot ActuatorCloudSpring Boot
- 最近爆火的帥小夥丁真在AI面前顏值多少分?AI
- Spring Boot系列之一:如何快速熟悉Spring技術棧Spring Boot