spring.datasource.*
新的資料源參數配置如下:
spring.sql.init.*
今天把項目更新到了 Spring Boot 2.5,再順便把 spring.datasource 也換成了 spring.sql.init:

以為會很順利,啟動居然報錯:
資料源參數不是被重命名了嗎,咋不行。。。
看來新的資料源參數并沒有被識别,于是抱着懷疑的态度看了下 Spring Boot 2.5 資料源參數綁定類 DataSourceProperties 的源碼:
從廢除的幾個類,再到新參數使用到的幾個新類,它們都指向的是初始化 SQL 資料庫(比如:建立一張表、初始化表資料),而不是初始化資料源(和資料庫建立連接配接池),這是兩個概念,前者需要依賴後者完成。。
WC,差點被帶溝裡了……
初始化 SQL 資料庫
好吧,既然清楚了,我們再來驗證下新的 SQL 資料庫初始化機制,看看了解是否有錯。
下面直接說重點,Spring Boot 基礎架構就就不介紹了,不清楚的可以關注公衆号:Java技術棧,在背景回複:boot,我寫的一堆實戰教程都整理好了。
添加資料源和 SQL 初始化參數:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/javastack
username: root
password: 12345678
sql.init:
schemaLocations:
- classpath:sql/create_t_javastack.sql
dataLocations:
- classpath:sql/insert_t_javastack.sql
注意上面的 sql.init.*,更多初始化參數請參考這個類:
org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties
建立對應的建立表 SQL 檔案:
sql/create_t_javastack.sql
mysql> desc t_javastack;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(50) | NO | | NULL | |
| content | varchar(100) | NO | | NULL | |
+---------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> select * from t_javastack;
+----+---------+---------+
| id | title | content |
+----+---------+---------+
| 1 | 标題1 | 内容1 |
| 2 | 标題2 | 内容2 |
| 3 | 标題3 | 内容3 |
| 4 | 标題4 | 内容4 |
| 5 | 标題5 | 内容5 |
+----+---------+---------+
5 rows in set (0.00 sec)
現在終于和我了解的一緻了,你了解了嗎?
這個功能可能在單元測試的時候有用到,生産環境是不太可能會用到的。
總結
Spring Boot 2.5 中的 spring.sql.init.* 是初始化 SQL 資料庫使用的新參數字首,不再使用字首 spring.datasource.* 了,後續版本會進行移除,其實就是 DDL/DML 配置和資料源連接配接配置分家了。
新的參數确實也更清楚明朗了,小夥伴們有用到 SQL 資料庫初始化功能的,更新 Spring Boot 2.5 時可以注意一下。有時候理論看再多,還不如實踐一次,實踐出真理,你以為你了解對了,其實不然。
本文完整的的示例源碼已經上傳:
https://github.com/javastacks/spring-boot-best-practice大家可以 Star 學習一下,Spring Boot 2.5 我還在慢慢踩坑中,後面會形成更多實戰幹貨文章,關注公衆号Java技術棧第一時間推送。
最後,大家覺得本文有用的話,動動小手,給棧長來個小小的在看、轉發呗,原創不易,需要你的鼓勵哦~
版權申明:本文系公衆号 "Java技術棧" 原創,原創實屬不易,轉載、引用本文内容請注明出處,禁止抄襲、洗稿,請自重,尊重大家的勞動成果和知識産權,抄襲必究。