Flyway实现简化Spring Boot项目部署的方法

发布时间:2020-06-23 10:44:33 作者:清晨
来源:亿速云 阅读:222

这篇文章将为大家详细讲解有关Flyway实现简化Spring Boot项目部署的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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.执行细节

4.其他配置

在 Spring Boot 中,关于 Flyway 也有不少配置,这些配置都在 application.properties 中进行配置,常用的几个来和大家说下:

关于Flyway实现简化Spring Boot项目部署的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. maven的spring boot项目部署到tomcat出现js文件失效怎么解决
  2. Spring Boot集成Flyway实现数据库版本控制?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flyway springboot spring boo

上一篇:Spring Web相关模块的原理分析

下一篇:SpringBoot实现分离资源文件并打包的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》