江帥帥:精通 Spring Boot 系列 03

2021-01-09 奈學課程分享

1. 關閉指定的自動配置

通過上面的 @EnableAutoConfiguration 註解就能根據指定的依賴,自動進行配置。但如果你想關閉某一項自動配置,就需要使用 @SpringBootApplication 下的 exclude 參數來設置。比如,我想關閉 DataSource,代碼具體如下:

2. 自定義啟動 banner

能滿足企業定製 logo 或項目啟動圖案。比如,可以藉助如下幾個網站來生成:

生成之後,直接將複製好的圖案,放到新建的 banner.txt 文件中。運行程序之後,具體顯示效果如下:

3. 全局配置文件

一般使用 application.properties 或者 application.yml 文件來當作全局配置文件。它能被添加在下面幾個目錄下,區別是加載的順序是不同的,具體如下:

比如,可以在 application.properties 配置文件中,設置埠、請求後綴等內容。具體的配置參數可以參考官網文檔第 10 章 Appendices:https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/htmlsingle/#common-application-properties

4. 配置 Web 容器

在 Spring Boot 應用中,可以內置 Tomcat、Netty、Jetty 等容器。

1)配置 Tomcat

如果添加了 spring-boot-starter-web 依賴,則項目會默認使用 Tomcat 作為 Web 容器。

針對 Tomcat 可以添加一些配置,具體配置如下:

2)配置 Jetty

在 Spring Boot 應用中嵌入 Jetty 的配置很簡單,把 spring-boot-starter-web 中的 Tomcat 改成 Jetty 即可,具體配置如下:

3)配置 Undertow

Undertow 是紅帽公司開發的一款基於 NIO 的高性能 Web 嵌入式伺服器,擁有非常好的性能。配置方式具體如下:

5. HTTPS 配置

使用 JDK 提供的 keytool 工具,可以生成一個數字證書,具體命令如下:

-genkey 表示創建一個密鑰

-alias httpskey 設置密鑰的別名-keyalg RSA 表示使用的加密算法是 RSA-keysize 2048 設置密鑰的長度-keystore hello.p12 設置密鑰存放位置-validity 365 設置密鑰的有效時間然後在 application.properties 文件中編輯,具體配置如下:

6. 類型安全配置

前面也說過,我們的配置文件可以使用 properties 配置和 yaml 配置,項目啟動後,它們都會被加載到 Spring 的環境中,如果你要用配置信息的話,直接使用 @Value 註解即可。

但數據注入到屬性中,需要注意安全。Spring Boot 使用類型安全配置屬性,即使在數據量非常龐大的情況下,將配置文件中的數據注入到 Bean 裡也是很方便的。

添加對應的 Bean 類,使用 @ConfigurationProperties 註解來使用配置,通過prefix 屬性來描述要加載的配置文件的前綴,具體如下:

7. YAML 配置

YAML 是專門用來寫配置文件的語言,非常簡潔、強大,類似 JSON。它可用來替換 application.properties 文件。YAML 主要是由 spring-boot-starter-web 依賴模塊中的 snakeyaml 依賴進行解析。但它不能使用 @propertySource 註解加載 YAML 文件,否則還要使用 Properties 配置。

舉個小案例,具體寫法如下:

還可以自定義配置,具體寫法如下:

對應的代碼,跟前面的 User 類一樣,具體源碼如下:

還能設置成集合的樣式,集合中是單個值,具體寫法如下:

對應的代碼,具體源碼如下:

也能先設置成集合的樣式,但集合中是對象,具體寫法如下:

對應的代碼,具體源碼如下:

8. Profile 配置

如果我們在項目中,需要頻繁在開發環境、測試環境和生產環境中更改大量的配置,會讓你懷疑人生,所以我們使用 @Profile 註解來更加簡潔進行處理。

具體的命名規則:application-{xxx}.properties,這樣就能在不同環境下進行區別配置信息。具體使用步驟如下:

第一步,添加配置文件

在 resources 目錄中,創建 application-dev.properties 和 application-prod.properties 文件,代表開發和生產環境中的配置。

第二步,指定對應模式

1)在 application.properties 中指定

2)在啟動類 main 方法中指定

3)也可以在項目啟動時配置

在我們將項目打成 jar 文件再啟動,具體的操作命令如下:

相關焦點

  • Spring SPI和Spring Boot SPI - 第345篇
    那麼同樣的道理,spring-boot-autoconfigure模塊也能動態加載了。org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\org.springframework.boot.autoconfigure.condition.OnBeanCondition,\org.springframework.boot.autoconfigure.condition.OnClassCondition
  • Spring Boot 和 Spring 到底有啥區別?
    Spring Boot 理論+實戰系列教程大家看這個:https://github.com/javastacks/spring-boot-best-practice首先,讓我們看一下使用Spring創建Web應用程式所需的最小依賴項<dependency> <groupId>
  • Spring Boot Admin 2.2.4 發布,兼容最新版本 Spring Boot
    spring boot admin 2.2.4 版本發布,本版本為 bug 修復版本 主要兼容 spring boot 2.3.x。
  • Spring Boot 2.4 手工和 SDKMAN! 安裝 Spring Boot 命令行
    可用的下載地址,請參考下面的連結:spring-boot-cli-2.4.2-SNAPSHOT-bin.zipspring-boot-cli-2.4.2-SNAPSHOT-bin.tar.gzSapshot 版本下載,snapshot 版本的意思是從最新的原始碼庫中進行編譯構建的,通常這個版本具有更多的 Bug 修復,下載地址請訪問下面的連結: snapshot 構建版本
  • Spring Boot中使用Mockito進行Web測試 - 第339篇
    好了進入正題,我們添加web依賴:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId><
  • spring boot 整合shiro 錯誤
    最近在弄spring boot 整合shiro的。凱哥現在用的是spring boot。web.xml沒有。但是凱哥配置了shiro的核心攔截器啊。如下圖:並且使用了@Configuration這個註解了。
  • Spring Boot 2.X 實戰--SQL 資料庫(MyBatis)
    Gradle 依賴 1dependencies { 2    implementation 'org.springframework.boot:spring-boot-starter-web' 3    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter
  • Spring Boot 常見錯誤及解決方法
    錯誤分析: Spring Boot 的正常 jar 包運行方是通過 spring-boot-loader 這個模塊裡的 JarLauncher 完成的,該類內部提供了一套運行的規範。解決方案: 在 pom 裡加上 spring-boot-maven-plugin 的 maven 插件配置 (該插件會在 jar 裡加入 spring-boot-loader 的代碼,並在 MANIFEST.MF 中的 Main-Class 裡寫入 JarLauncher):<plugin
  • Spring Boot集成JDBCTemplate
    Spring Boot集成添加依賴首先添加依賴:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc
  • Spring 和 Spring Boot 之間到底有啥區別?
    ><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.6.RELEASE</version></dependency
  • Spring Boot中Tomcat、Jetty、Undertow的使用
    Tomcat在我們使用SpringBoot開發WebApi時,會引入spring-boot-starter-web這個starter組件,其自帶了Tomcat容器,所以我們平時新建項目啟動起來,會看見Tomcat相關的一些信息。
  • Spring Boot 集成undertow作為web容器
    一、先去除tomcat的引用<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web
  • 2021 最新版 Spring Boot 速記教程
    「引用:當一個資源從與該資源本身所在伺服器不同的域或埠請求一個資源時,資源會發起一個跨域HTTP請求」詳細可以參考這篇文章-springboot系列文章之實現跨域請求(CORS),這裡只是記錄一下如何使用:例如在我的前後端分離 demo 中,如果沒有通過 Nginx 轉發
  • Spring 和 Spring Boot 最核心的 3 大區別,詳解!
    <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <version>2.0.6.RELEASE<
  • Spring Boot 整合 Thymeleaf
    >在新建項目時添加,在 Templeate Engines 中勾選 Thymeleaf;對於未添加 Thymeleaf 依賴的項目,直接在 pom.xml 中手動添加依賴即可;<dependency><groupId>org.springframework.boot
  • 使用IntelliJ IDEA創建一個Maven的Spring Boot項目
    </groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>
  • Spring Boot 單元測試
    單元測試引用:眾所周知,通過spring initialize創建的Spring Boot項目會在Maven中自動攜帶很多starter依賴:其中包含了一個名為spring-boot-starter-test的依賴,本文是圍繞這個依賴展開。
  • Spring Boot 啟動事件和監聽器,太強大了!
    毫無疑問,在 Spring Boot 框架中,事件和監聽也得到了發揚光大,除了常用的 Spring Framework 事件(例如:ContextRefreshedEvent)之外,Spring Boot 在啟動過程中還發送一系列其他的應用程式事件。
  • 實戰Spring Boot 2.0系列:單機定時任務的幾種實現
    下表顯示了一些 cron 表達式的 例子 和它們的意義:環境準備配置gradle依賴利用 Spring Initializer 創建一個 gradle 項目 spring-boot-scheduler-task-management,創建時添加相關依賴。
  • Spring Boot Security 詳解
    INSERT INTO role_permission (role_id, permission_id) VALUES (2, 1);INSERT INTO role_permission (role_id, permission_id) VALUES (2, 2);pom.xml<dependency> <groupId>org.springframework.boot