日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

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

Spring是一個(gè)開(kāi)源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。

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

Flyway簡(jiǎn)介

Flyway是一個(gè)數(shù)據(jù)庫(kù)版本化管理工具,通過(guò)SQL腳本實(shí)現(xiàn)DB Migration自動(dòng)化升級(jí),支持獨(dú)立運(yùn)行,也可以和構(gòu)建工具或者Spring開(kāi)發(fā)環(huán)境集成。

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

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

flyway各個(gè)版本請(qǐng)到這里去找:https://mvnrepository.com/artifact/org.flywaydb/flyway-core我們的maven使用的是阿里云的倉(cāng)庫(kù),阿里云倉(cāng)庫(kù)中沒(méi)有低版本的依賴,我們我們需要下載jar包。這里下載的是3.0版本的jar包。

下載的包需要拷貝到項(xiàng)目webapp/WEB-INF/lib中(web項(xiàng)目都會(huì)有WEB-INF這個(gè)文件夾,只需要找到你項(xiàng)目中web文件夾就行,web文件夾,就是文件夾上有個(gè)藍(lán)點(diǎn)的,具體看下圖的webapp文件夾)

spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

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

spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

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

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

添加flyway配置類,更多配置請(qǐng)看源代碼

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開(kāi)始執(zhí)行,準(zhǔn)備獲取數(shù)據(jù)源');Context context = new InitialContext();//獲取tomcat中的數(shù)據(jù)源DataSource dataSource = (DataSource) context.lookup('java:comp/env/jdbc/wxi');log.info('DatabaseFlywayMigration-->migrate:獲取數(shù)據(jù)源成功,準(zhǔn)備執(zhí)行flyway配置');Flyway flyway = new Flyway();// 設(shè)置sql腳本文件的編碼flyway.setEncoding('UTF-8');flyway.setOutOfOrder(true);flyway.setDataSource(dataSource);// 設(shè)置接受flyway進(jìn)行版本管理的多個(gè)數(shù)據(jù)庫(kù)//flyway.setSchemas('flywaydemo');// 設(shè)置存放flyway metadata數(shù)據(jù)的表名 flyway.setTable('flyway_schema_history');// 設(shè)置執(zhí)行migrate操作之前的validation行為//flyway.setValidationMode(ValidationMode.ALL);// 設(shè)置當(dāng)validation失敗時(shí)的系統(tǒng)行為//flyway.setValidationErrorMode(ValidationErrorMode.FAIL);// 設(shè)置當(dāng)validation失敗時(shí)的系統(tǒng)行為try { flyway.setInitOnMigrate(true); log.info('DatabaseFlywayMigration-->migrate:配置成功,即將執(zhí)行sql語(yǔ)句'); flyway.migrate(); log.info('DatabaseFlywayMigration-->migrate:sql語(yǔ)句執(zhí)行成功,flyway---END');} catch (FlywayException e) { log.error('DatabaseFlywayMigration-->migrate:執(zhí)行sql語(yǔ)句失敗,請(qǐng)查看日志排查錯(cuò)誤'); flyway.repair(); e.printStackTrace();} }}

在spring的xml中注入flyway配置類的bean(每個(gè)spring項(xiàng)目都會(huì)帶有一個(gè)xml文件,用來(lái)注冊(cè)bean,復(fù)制的時(shí)候注意項(xiàng)目中DatabaseFlywayMigration所在的路徑)

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

spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

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

spring框架集成flyway項(xiàng)目的詳細(xì)過(guò)程

命名規(guī)則:此處的SQL語(yǔ)句命名需要遵從一定的規(guī)范,否則運(yùn)行的時(shí)候flyway會(huì)報(bào)錯(cuò)。命名規(guī)則主要有兩種:

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

其中,V開(kāi)頭的SQL執(zhí)行優(yōu)先級(jí)要比R開(kāi)頭的SQL優(yōu)先級(jí)高。

V:固定大寫

20210707.01:20210707是日期,后面用.01代表序號(hào)

因?yàn)閒lyway的執(zhí)行是有個(gè)順序的,比如你執(zhí)行了V2021__create_user,有執(zhí)行V2020_update_user。就會(huì)報(bào)錯(cuò),原因就是2020<2021。所以我們要保證序號(hào)是依次增大。

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

1.0.1.1 比 1.0.1 版本高。1.0.10 比 1.0.9.4 版本高。1.0.10 和 1.0.010 版本號(hào)一樣高, 每個(gè)版本號(hào)部分的前導(dǎo) 0 會(huì)被忽略。

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

作者:天下沒(méi)有收費(fèi)的bug出處:https://www.cnblogs.com/LoveBB/本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須在文章頁(yè)面給出原文鏈接,否則保留追究法律責(zé)任的權(quán)利。

到此這篇關(guān)于spring集成flyway的文章就介紹到這了,更多相關(guān)spring集成flyway內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲毛片| 伊人精品一区| 亚洲精品一级二级| 亚洲3区在线| 播放一区二区| 国产精品久久久久久久久久白浆 | 天海翼亚洲一区二区三区| 97精品国产福利一区二区三区| 丝袜亚洲精品中文字幕一区| 正在播放日韩精品| 亚洲免费一区三区| 91tv亚洲精品香蕉国产一区| 欧美在线日韩| 午夜亚洲福利在线老司机| 国产精品成久久久久| 日韩国产欧美视频| 免费视频一区三区| 98精品视频| 欧美黄色精品| 日韩精品免费一区二区夜夜嗨| 亚洲一级影院| 久草免费在线视频| 国产日韩高清一区二区三区在线| 久久av一区二区三区| 91精品一区二区三区综合在线爱 | 中文字幕日本一区二区| 天堂资源在线亚洲| 国产精品99久久精品| 国产精品xxxav免费视频| 亚洲人妖在线| 日韩精品一级中文字幕精品视频免费观看| 久久久亚洲一区| 激情黄产视频在线免费观看| 久久精品三级| 欧美激情综合| 久久99蜜桃| 国产精品网在线观看| 日韩激情综合| 日韩激情中文字幕| 日韩精品一区二区三区中文字幕| 免播放器亚洲一区| 久久国产精品久久w女人spa| 九九久久婷婷| 欧美特黄a级高清免费大片a级| 99久久夜色精品国产亚洲狼 | 色婷婷久久久| 久久精品国产www456c0m| 日韩视频网站在线观看| 日本蜜桃在线观看视频| 久久精品国产免费| 麻豆精品在线| 国产专区精品| 91欧美在线| 中文字幕在线官网| 欧美日韩视频免费观看| 色婷婷色综合| аⅴ资源天堂资源库在线| 激情不卡一区二区三区视频在线| 欧美国产精品| 激情黄产视频在线免费观看| 国产高清不卡| 久久精品1区| 99久久婷婷| 国产亚洲毛片在线| 亚洲网址在线观看| 日韩高清一区在线 | 国产乱码精品一区二区三区亚洲人 | 亚洲制服一区| 亚洲人妖在线| 欧美日韩1区2区3区| 欧美日本久久| 麻豆精品蜜桃视频网站| 久久精品三级| 丝袜美腿诱惑一区二区三区| 欧美日韩在线二区| 久热精品在线| 91久久精品无嫩草影院| 久久久国产精品入口麻豆| 欧美激情另类| 午夜国产精品视频| 久久午夜精品| 国产精品一区二区精品视频观看 | 999精品一区| 男人天堂欧美日韩| 欧美日韩精品一区二区三区视频 | 欧美xxxx中国| 欧美~级网站不卡| 亚洲欧美日韩视频二区| 亚洲精品自拍| 欧美精品成人| 91看片一区| 美国三级日本三级久久99| 欧美偷窥清纯综合图区| 精品网站aaa| 日韩在线短视频| 久久亚洲图片| 精品三级av在线导航| 亚洲国产专区校园欧美| 亚洲精品系列| 激情综合五月| 日韩一级网站| 91av一区| 99精品在线| 亚洲精品一级| 91一区二区| 在线一区二区三区视频| 麻豆精品在线播放| 在线国产一区二区| 欧美日韩亚洲一区在线观看| 日韩高清成人| 91成人福利| 亚洲婷婷免费| 国产免费久久| 在线亚洲自拍| 精品视频一区二区三区四区五区| 亚洲欧洲一区| 欧美精品成人| 首页亚洲欧美制服丝腿| 欧美国产日韩电影| 日韩中文字幕区一区有砖一区| 狠狠久久伊人中文字幕| 亚洲一区二区av| 欧美gv在线| 国产亚洲精aa在线看| 免费不卡中文字幕在线| 欧美精品成人| 免费看日韩精品| 高潮一区二区| 欧美日韩亚洲一区在线观看| 婷婷综合亚洲| 国产在线视频欧美一区| 综合欧美精品| 亚洲一级网站| 国产一区三区在线播放| 日本亚洲欧洲无免费码在线| 91精品国产乱码久久久久久久| 国产黄色一区| 日本成人手机在线| 国产精品美女| 日韩久久视频| 国产精品亚洲综合在线观看| 在线视频精品| 日韩综合精品| 国产精品15p| 91午夜精品| 亚洲欧洲免费| 欧美日韩国产一区精品一区| 国产精品高颜值在线观看| 欧美亚洲自偷自偷| 综合精品一区| 午夜久久久久| 日韩在线第七页| 麻豆精品久久久| 日韩福利视频导航| 尤物在线精品| 久久人人精品| 91综合视频| 久久精品国产福利| 日韩高清电影免费| 亚洲香蕉视频| 久久aⅴ国产紧身牛仔裤| 欧美色图一区| 最新中文字幕在线播放 | 精品亚洲美女网站| 成人国产精品| 精品国产中文字幕第一页| 欧美一区影院| 日本中文字幕视频一区| 波多视频一区| 中文无码日韩欧| 激情婷婷欧美| 成人在线视频区| 日韩精品成人| 国产色综合网| 99久久久国产精品美女| 精品国产乱码| 国产私拍福利精品视频二区| 日韩一区二区久久| 欧美成人基地| 成人午夜毛片| 国产精品亚洲片在线播放| 视频一区二区欧美| 国产精品99免费看| 国产粉嫩在线观看| 欧美成人精品午夜一区二区| 亚洲午夜免费| 欧美特黄一级| 99久久精品国产亚洲精品| 国产+成+人+亚洲欧洲在线| 国产日本亚洲| 日韩动漫一区| 蜜桃久久精品一区二区| 国产一区亚洲| 群体交乱之放荡娇妻一区二区| 国产激情综合| 国产精品亚洲综合色区韩国| 三上悠亚国产精品一区二区三区| 亚洲精品欧美| 国产精品久久久久久久免费软件| 国产福利一区二区精品秒拍 |