FlyWay实现数据库表结构以及数据通过应用自动升级
- 2020-02-10 07:50:00
- Seagull 原创
- 4951
最终想实现的效果:用户以后无需再手动升级SQL,直接替换应用包即可,自动完成数据库表结构的升级以及初始数据的插入。
最近有用户提意见,希望通过flyway实现应用自动进行数据库表结构升级,尝试过程有点曲折,但是其实实现还是比较简单的,先记录下整个过程吧。
首先,准备依赖以及插件管理
由于我是老项目加入flyway插件,所以跟新项目有一点小小的区别。首先LuckyFrame本来就是用的SpringBoot,而SpringBoot中其实已经提供了flyway core包以及flyway插件的建议版本,所以我们直接在pom.xml文件中加入flyway-core的依赖以及插件管理即可。
按住Ctrl键,点击flyway-core,可以看到Spring Boot中默认建议版本。
这样,首先我们把依赖以及插件包准备好了。
第二,准备一个目录存放SQL文件以及放置flyway相关配置。
flyway的默认目录是["classpath:/db/migration"],所以我就直接在项目路径下创建了相对应的目录,src\main\resources\db\migration,创建好以后,把基准版本的SQL放入进去即可。
flyway的相关配置,我直接放到了application.yml文件中进行管理,spring boot会自动加载,没什么好说的。
第三步,项目启动的时候,发现spring boot会先加载定时任务,而定时任务又依赖于数据库的查询,这时候如果表还没有自动创建,就会出现问题,于是必须要改变spring boot加载的定时任务以及flyway的顺序,百度了一下,找到了比较靠谱的方案。
先创建一个flyway的配置类,目的是为了取消spring boot默认的加载配置顺序,而使用自定义配置,如下:
然后在启动的时候排除默认配置
然后我们找到定时任务的配置类,让定时任务的配置类依赖于flyway,这样,就会先执行flyway,再启动定时任务了。
启动项目,完美成功,自动创建了所有表数据。
温馨提示:LuckyFrame V3.2及后续版本,将通过flyway自动升级表结构,用户只需升级更换应用包即可,无需再手动升级数据库SQL。
本站文章以及相关内容除注明 转贴外,均为本站 原创或 翻译。
如果本站转载的文章涉嫌侵犯了您的权益,请在评论区留言或是邮件联系管理员及时删除 【admin@luckyframe.cn】
本站原创或是翻译的文章欢迎任何形式转载,但请务必 注明出处以及链接,尊重他人劳动成果,拒绝剽窃从你做起。