您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Flyway實現簡化Spring Boot項目部署的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1.什么是 Flyway
我們在公司做開發時,由于項目需求的變化,或者前期設計缺陷,導致在后期需要修改數據庫,這應該是一個比較常見的事情,如果項目還沒上線,你可能把表刪除了重新創建,但是如果項目已經上線了,就不能這樣簡單粗暴了,我們需要通過 SQL 腳本在已有數據表的基礎上進行升級。
目前 Java 這塊,想要對數據庫的版本進行管理主要有兩個工具:
Flyway
Liquibase
兩個工具各有千秋,但是核心功能都是數據庫的版本管理,這里主要來看 Flyway。就像我們使用 Git 來管理代碼版本一樣,Flyway 可以用來管理數據庫版本。
好了,接下來我們就來看看用 Flyway 如何簡化微人事部署,然后再來說說 Flyway 的一個大致原理。
2.嵌入到微人事
如果是在一個全新的項目中使用 Flyway,那么在新建一個 Spring Boot 項目時,就有 Flyway 的選項,如下圖:
項目創建成功后,resources 目錄下也會多出來一個 db/migration 目錄,這個目錄用來存放數據庫腳本,如下:
注意
這個如果創建項目時就選擇了 Flyway 依賴,就會有這個目錄。現在我要在已經做好的微人事中加入 Flyway,這個目錄就需要我手動創建了。
首先在微人事中添加 flyway 依賴:
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency>
然后在 vhr-web 模塊下的 resources 目錄下,手動創建 db/migration 目錄,然后在該目錄下創建數據庫腳本,數據庫腳本的命名方式如下:
V<VERSION>__<NAME>.sql
首先是大寫字母 V,然后是版本號,要是有小版本可以用下劃線隔開,例如 2_1,版本號后面是兩個下劃線,然后是腳本名稱,文件后綴是 .sql。
例如我這里創建我的第一個數據庫腳本,取名為 V1__vhr.sql,腳本內容就是微人事的數據庫腳本,大家可以在 https://github.com/lenve/vhr 這里獲取到。
完了之后,可以不用添加額外配置,大家只需要在本地 MySQL 中創建一個空的 vhr 數據庫即可,然后直接啟動微人事項目,項目啟動成功后,我們查看啟動日志:
從這段啟動日志中,我們可以看到 Flyway 的執行信息,數據庫腳本的執行執行,同時這里還說了,Flyway 還給創建了一個 flyway_schema_history 表,這個表用來記錄數據庫的更新歷史。
這個時候,打開本地數據庫,我們發現 vhr 庫中該有的表都有了。同時還發現了 flyway_schema_history 表,如下:
有了這條記錄,下次再啟動 vhr 項目,V1__vhr.sql 這個腳本文件就不會執行了,因為系統知道這個腳本已經執行過了,如果你還想讓 V1__vhr.sql 腳本再執行一遍,需要手動刪除 flyway_schema_history 表中的對應記錄,那么項目啟動時,這個腳本就會被執行了。
3.執行細節
4.其他配置
在 Spring Boot 中,關于 Flyway 也有不少配置,這些配置都在 application.properties 中進行配置,常用的幾個來和大家說下:
關于Flyway實現簡化Spring Boot項目部署的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。