2021-07-13

spring集成flyway

最近给公司项目集成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文件夹)

 


新建资源目录resources
在其下面建立db/migration(sql文件默认读取此路径下的文件夹中的.sql文件)


在pom.

 <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的DatabaseFlywayMigration所在的路径)

 <!-- flayway --><bean id="flywayMigration1" class="com.dt.flyway.DatabaseFlywayMigration" lazy-init="false" init-method="migrate"> </bean>




到这里,移动端整合flyway就完成了。
以后这些sql语句,只需要放到resources/db/migration文件夹下面即可(但是这些sql命名都是不符合flyway的,需要进行名称的修改)

原文转载:http://www.shaoqun.com/a/871442.html

跨境电商:https://www.ikjzd.com/

塔图:https://www.ikjzd.com/w/2274

retriever:https://www.ikjzd.com/w/773

f2c:https://www.ikjzd.com/w/1242


最近给公司项目集成flyway,由于我们项目移动端使用的是spring框架,网上看了很多博客,感觉这方面的东西还是很少的,毕竟现在是springboot的天下,大多数都是springboot集成flyway。但是还是有不少公司遗留有spring框架的项目。这里就自己肝一篇,希望能帮到更多想把flyway添加到spring项目中的人。由于使用的是spring框架。因此我们选择低版本的flyway。f
扬帆计划:https://www.ikjzd.com/w/1581
美国纽约市布朗克斯动物园:http://www.30bags.com/a/245967.html
美国纽约有什么好玩的?:http://www.30bags.com/a/418606.html
美国奇怪的博物馆 :http://www.30bags.com/a/410536.html
美国签证的种类和申领办法介绍:http://www.30bags.com/a/414425.html
少妇口述:乱性丈夫将我拖进换妻游戏:http://lady.shaoqun.com/a/73636.html
妈妈说一周一次 姐今天晚上就是你的人:http://lady.shaoqun.com/m/a/247748.html
囗述我互换丈夫过程 邻居大棒在我体内不停抽搐:http://www.30bags.com/m/a/249671.html
开始波及中小卖家,大规模审核亚马逊在查什么?:https://www.ikjzd.com/articles/146562
男孩隐形,少妇在家出轨,绿帽之王诞生:http://lady.shaoqun.com/a/418081.html
跨境服务商图鉴:每月都有过亿融资 一季度进出口4195亿:https://www.ikjzd.com/articles/146566
集装箱运价连涨九周,船公司宣布停航跳港,央视:抢舱位!抢箱!外贸出货难!:https://www.ikjzd.com/articles/146567

No comments:

Post a Comment