电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

基于Flyway實現簡化Spring Boot項目部署

瀏覽:19日期:2023-09-02 17:53:15

1.什么是 Flyway

我們在公司做開發時,由于項目需求的變化,或者前期設計缺陷,導致在后期需要修改數據庫,這應該是一個比較常見的事情,如果項目還沒上線,你可能把表刪除了重新創建,但是如果項目已經上線了,就不能這樣簡單粗暴了,我們需要通過 SQL 腳本在已有數據表的基礎上進行升級。

目前 Java 這塊,想要對數據庫的版本進行管理主要有兩個工具:

Flyway

Liquibase

兩個工具各有千秋,但是核心功能都是數據庫的版本管理,這里主要來看 Flyway。就像我們使用 Git 來管理代碼版本一樣,Flyway 可以用來管理數據庫版本。

好了,接下來我們就來看看用 Flyway 如何簡化微人事部署,然后再來說說 Flyway 的一個大致原理。

2.嵌入到微人事

如果是在一個全新的項目中使用 Flyway,那么在新建一個 Spring Boot 項目時,就有 Flyway 的選項,如下圖:

基于Flyway實現簡化Spring Boot項目部署

項目創建成功后,resources 目錄下也會多出來一個 db/migration 目錄,這個目錄用來存放數據庫腳本,如下:

基于Flyway實現簡化Spring Boot項目部署

注意

這個如果創建項目時就選擇了 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實現簡化Spring Boot項目部署

從這段啟動日志中,我們可以看到 Flyway 的執行信息,數據庫腳本的執行執行,同時這里還說了,Flyway 還給創建了一個 flyway_schema_history 表,這個表用來記錄數據庫的更新歷史。

這個時候,打開本地數據庫,我們發現 vhr 庫中該有的表都有了。同時還發現了 flyway_schema_history 表,如下:

基于Flyway實現簡化Spring Boot項目部署

有了這條記錄,下次再啟動 vhr 項目,V1__vhr.sql 這個腳本文件就不會執行了,因為系統知道這個腳本已經執行過了,如果你還想讓 V1__vhr.sql 腳本再執行一遍,需要手動刪除 flyway_schema_history 表中的對應記錄,那么項目啟動時,這個腳本就會被執行了。

3.執行細節

我們在定義腳本的時候,除了 V 字開頭的腳本之外,還有一種 R 字開頭的腳本,V 字開頭的腳本只會執行一次,而 R 字開頭的腳本,只要腳本內容發生了變化,啟動時候就會執行。 使用了 Flyway 之后,如果再想進行數據庫版本升級,就不用該以前的數據庫腳本了,直接創建新的數據庫腳本,項目在啟動時檢測了有新的更高版本的腳本,就會自動執行,這樣,在和其他同事配合工作時,也會方便很多。因為正常我們都是從 Git 上拉代碼下來,不拉數據庫腳本,這樣要是有人更新了數據庫,其他同事不一定能夠收到最新的通知,使用了 Flyway 就可以有效避免這個問題了。 所有的腳本,一旦執行了,就會在 flyway_schema_history 表中有記錄,如果你不小心搞錯了,可以手動從 flyway_schema_history 表中刪除記錄,然后修改 SQL 腳本后再重新啟動(生產環境不建議)。

4.其他配置

在 Spring Boot 中,關于 Flyway 也有不少配置,這些配置都在 application.properties 中進行配置,常用的幾個來和大家說下:

spring.flyway.enabled:是否開啟 flyway,默認就是開啟的 spring.flyway.encoding:flyway 字符編碼 spring.flyway.locations:sql 腳本的目錄,默認是 classpath:db/migration,如果有多個,用 , 隔開 spring.flyway.clean-disabled:這個屬性非常關鍵,它表示是否要清除已有庫下的表,如果執行的腳本是 V1__xxx.sql,那么會先清除已有庫下的表,然后再執行腳本,這在開發環境下還挺方便,但是在生產環境下就要命了,而且它默認就是要清除,生產環境一定要自己配置設置為 true。 spring.flyway.table:配置數據庫信息表的名稱,默認是 flyway_schema_history。

好了,關于 Flyway 我就先說這么多,代碼也已經更新到 vhr (https://github.com/lenve/vhr)上了,感興趣的小伙伴不妨下載試一下。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 广西正涛环保工程有限公司【官网】| 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎| 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 湖南教师资格网-湖南教师资格证考试网| 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 南昌旅行社_南昌国际旅行社_南昌国旅在线| 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 北京公寓出租网-北京酒店式公寓出租平台 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 艺术涂料|木纹漆施工|稻草漆厂家|马来漆|石桦奴|水泥漆|选加河南天工涂料 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 2025第九届世界无人机大会| 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 |