一些 Spring Boot 小技巧、小知識點 初始化數據 我們在做測試的時候經常需要初始化導入一些數據,如何來處理呢?會有兩種選擇,一種是使用 Jpa,另外一種是 Spring JDBC 。兩種方式各有區別下麵來詳細介紹。 使用 Jpa 在使用 spring boot jpa的情況下設置 spri ...
一些 Spring Boot 小技巧、小知識點
初始化數據
我們在做測試的時候經常需要初始化導入一些數據,如何來處理呢?會有兩種選擇,一種是使用 Jpa,另外一種是 Spring JDBC 。兩種方式各有區別下麵來詳細介紹。
使用 Jpa
在使用 spring boot jpa
的情況下設置 spring.jpa.hibernate.ddl-auto
的屬性設置為 create
or create-drop
的時候,Spring Boot 啟動時預設會掃描 classpath 下麵(項目中一般是 resources 目錄)是否有 import.sql
,如果有機會執行 import.sql
腳本。
使用 Spring JDBC
使用 Spring JDBC 需要在配置文件中添加以下配置
-
spring:
-
datasource:
-
schema: classpath:db/schema.sql
-
data: classpath:db/data.sql
-
sql-script-encoding: utf-8
-
jpa:
-
hibernate:
-
ddl-auto: none
-
schema :腳本中創建表的語句
-
data :腳本中初始化數據的預計
-
sql-script-encoding:設置腳本的編碼
Spring Boot 項目啟動的時候會自動執行腳本。
ddl-auto 四個值的解釋
create: 每次載入hibernate時都會刪除上一次的生成的表,然後根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是導致資料庫表數據丟失的一個重要原因。
create-drop :每次載入hibernate時根據model類生成表,但是sessionFactory一關閉,表就自動刪除。
update:最常用的屬性,第一次載入hibernate時根據model類會自動建立起表的結構(前提是先建立好資料庫),以後載入hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要註意的是當部署到伺服器後,表結構是不會被馬上建立起來的,是要等 應用第一次運行起來後才會。
validate :每次載入hibernate時,驗證創建資料庫表結構,只會和資料庫中的表進行比較,不會創建新表,但是會插入新值。 5、 none : 什麼都不做。
不同點
第一種方式啟動的時候 Jpa 會自動創建表,import.sql 只負責創建表單後的初始化數據。第二種方式啟動的時候不會創建表,需要在初始化腳本中判斷表是否存在,再初始化腳本的步驟。
在生產中,這兩種模式都建議慎用!
Thymeleaf 設置不校驗 html 標簽
預設配置下,Thymeleaf 對 .html 的內容要求很嚴格,比如 <metacharset="UTF-8"/>
,如果少封閉符號 /
,就會報錯而轉到錯誤頁。也比如你在使用 Vue.js 這樣的庫,然後有 <divv-cloak></div>
這樣的 html 代碼,也會被 Thymeleaf 認為不符合要求而拋出錯誤。
通過設置 Thymeleaf 模板可以解決這個問題,下麵是具體的配置:
-
spring.thymeleaf.cache=false
-
spring.thymeleaf.mode=LEGACYHTML5
LEGACYHTML5 需要搭配一個額外的庫 NekoHTML 才可用,項目中使用的構建工具是 Maven 添加如下的依賴即可完成:
-
<dependency>
-
<groupId>net.sourceforge.nekohtml</groupId>
-
<artifactId>nekohtml</artifactId>
-
<version>1.9.22</version>
-
</dependency>
自定義 Favicon
Spring Boot 提供了一個預設的 Favicon,也就是 Spring 的 logo ,我們可以根據自己企業的需要來定製它。
首先需要在 application.propertie 中關閉原有的logo
-
spring.mvc.favicon.enable=false
在將自己的 favicon.ico 放到 src/main/resources/static
下 ,然後再重新啟動項目就可以了。
文章內容已經升級到 Spring Boot 2.x
示例代碼-https://github.com/ityouknow/spring-boot-examples
-END-
Java 極客技術公眾號,是由一群熱愛 Java 開發的技術人組建成立,專註分享原創、高質量的 Java 文章。如果您覺得我們的文章還不錯,請幫忙贊賞、在看、轉發支持,鼓勵我們分享出更好的文章。
關註公眾號,大家可以在公眾號後臺回覆“博客園”,免費獲得作者 Java 知識體系/面試必看資料。