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

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

spring框架集成flyway項目的詳細過程

瀏覽:5日期:2023-07-03 11:07:52
什么是Spring

Spring是一個開源框架,它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。

Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。 目的:解決企業應用開發的復雜性 功能:使用基本的JavaBean代替EJB,并提供了更多的企業應用功能 范圍:任何Java應用 它是一個容器框架,用來裝javabean(java對象),中間層框架(萬能膠)可以起一個連接作用,比如說把Struts和hibernate粘合在一起運用。簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

Flyway簡介

Flyway是一個數據庫版本化管理工具,通過SQL腳本實現DB Migration自動化升級,支持獨立運行,也可以和構建工具或者Spring開發環境集成。

最近給公司項目集成flyway,由于我們項目移動端使用的是spring框架,網上看了很多博客,感覺這方面的東西還是很少的,畢竟現在是springboot的天下,大多數都是springboot集成flyway。但是還是有不少公司遺留有spring框架的項目。這里就自己肝一篇,希望能幫到更多想把flyway添加到spring項目中的人。

由于使用的是spring框架。因此我們選擇低版本的flyway。

flyway各個版本請到這里去找:https://mvnrepository.com/artifact/org.flywaydb/flyway-core我們的maven使用的是阿里云的倉庫,阿里云倉庫中沒有低版本的依賴,我們我們需要下載jar包。這里下載的是3.0版本的jar包。

下載的包需要拷貝到項目webapp/WEB-INF/lib中(web項目都會有WEB-INF這個文件夾,只需要找到你項目中web文件夾就行,web文件夾,就是文件夾上有個藍點的,具體看下圖的webapp文件夾)

spring框架集成flyway項目的詳細過程

新建資源目錄resources在其下面建立db/migration(sql文件默認讀取此路徑下的文件夾中的.sql文件)

spring框架集成flyway項目的詳細過程

在pom.xml中添加,如果不添加,resources中的文件就無法打包到war包中。

<resource><directory>src/main/resources</directory><includes> <include>**/*</include></includes> </resource>

添加flyway配置類,更多配置請看源代碼

package com.dt.flyway;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.flywaydb.core.Flyway;import org.flywaydb.core.api.FlywayException;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;/** * @Description: flyway配置類 * @author: * @Date: 2021/7/12 15:57 * @Copyright: Xi’an Dian Tong Software Co., Ltd. All Rights Reserved. * @Version 1.0 */public class DatabaseFlywayMigration { protected final static Logger log = LogManager.getLogger('DatabaseFlywayMigration'); public void migrate() throws NamingException {log.info('DatabaseFlywayMigration-->migrate:flyway開始執行,準備獲取數據源');Context context = new InitialContext();//獲取tomcat中的數據源DataSource dataSource = (DataSource) context.lookup('java:comp/env/jdbc/wxi');log.info('DatabaseFlywayMigration-->migrate:獲取數據源成功,準備執行flyway配置');Flyway flyway = new Flyway();// 設置sql腳本文件的編碼flyway.setEncoding('UTF-8');flyway.setOutOfOrder(true);flyway.setDataSource(dataSource);// 設置接受flyway進行版本管理的多個數據庫//flyway.setSchemas('flywaydemo');// 設置存放flyway metadata數據的表名 flyway.setTable('flyway_schema_history');// 設置執行migrate操作之前的validation行為//flyway.setValidationMode(ValidationMode.ALL);// 設置當validation失敗時的系統行為//flyway.setValidationErrorMode(ValidationErrorMode.FAIL);// 設置當validation失敗時的系統行為try { flyway.setInitOnMigrate(true); log.info('DatabaseFlywayMigration-->migrate:配置成功,即將執行sql語句'); flyway.migrate(); log.info('DatabaseFlywayMigration-->migrate:sql語句執行成功,flyway---END');} catch (FlywayException e) { log.error('DatabaseFlywayMigration-->migrate:執行sql語句失敗,請查看日志排查錯誤'); flyway.repair(); e.printStackTrace();} }}

在spring的xml中注入flyway配置類的bean(每個spring項目都會帶有一個xml文件,用來注冊bean,復制的時候注意項目中DatabaseFlywayMigration所在的路徑)

<!-- flayway --><bean lazy-init='false' init-method='migrate'> </bean>

spring框架集成flyway項目的詳細過程

到這里,移動端整合flyway就完成了。以后這些sql語句,只需要放到resources/db/migration文件夾下面即可(但是這些sql命名都是不符合flyway的,需要進行名稱的修改)

spring框架集成flyway項目的詳細過程

命名規則:此處的SQL語句命名需要遵從一定的規范,否則運行的時候flyway會報錯。命名規則主要有兩種:

僅需要被執行一次的SQL命名以大寫的”V”開頭,后面跟上”0~9”數字的組合,數字之間可以用“.”或者下劃線”“分割開,然后再以兩個下劃線 _ 分割,其后跟文件名稱,最后以.sql結尾。比如,V20210707__create_user.sql、V20210707__add_user.sql。可重復運行的SQL,則以大寫的“R”開頭,后面再以兩個下劃線分割,其后跟文件名稱,最后以.sql結尾。。比如,R__truncate_user_dml.sql。

其中,V開頭的SQL執行優先級要比R開頭的SQL優先級高。

V:固定大寫

20210707.01:20210707是日期,后面用.01代表序號

因為flyway的執行是有個順序的,比如你執行了V2021__create_user,有執行V2020_update_user。就會報錯,原因就是2020<2021。所以我們要保證序號是依次增大。

Flyway 是如何比較兩個 SQL 文件的先后順序呢?它采用 采用左對齊原則, 缺位用 0 代替 。舉幾個例子:

1.0.1.1 比 1.0.1 版本高。1.0.10 比 1.0.9.4 版本高。1.0.10 和 1.0.010 版本號一樣高, 每個版本號部分的前導 0 會被忽略。

__:這個是兩個 _ 例如:V2.0.9__upgrade.sqlV2.0.11__upgrade.sqlV2.0.13__upgrade.sqlV2.0.14__upgrade.sql

作者:天下沒有收費的bug出處:https://www.cnblogs.com/LoveBB/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文鏈接,否則保留追究法律責任的權利。

到此這篇關于spring集成flyway的文章就介紹到這了,更多相關spring集成flyway內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网| 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 江西自考网-江西自学考试网| 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 上海APP开发-APP制作-APP定制开发-上海APP开发制作公司-咏熠科技 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 湖南自考_湖南自学考试 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | ?水马注水围挡_塑料注水围挡_防撞桶-常州瑞轩水马注水围挡有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 篮球地板厂家_舞台木地板品牌_体育运动地板厂家_凯洁地板 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 |