Callbacks(回调)
虽然迁移可以满足大多数需求,但是有时我们需要一遍一遍的重复执行相同的操作。比如编译存储过程、更新视图和不同类型的数据库清理。
因此Flyway为您提供了使用Callbacks 回调提供了一个迁移的生命周期的概念。
这些是Flyway支持的事件:
名称:执行
beforeMigrate: 在迁移之前运行
beforeEachMigrate:迁移期间的每次迁移之前
afterEachMigrate:在Migrate期间每次成功迁移之后
afterEachMigrateError: 在迁移期间每次迁移失败后
afterMigrate:成功迁移后运行
afterMigrateError:迁移失败后运行
beforeUndo--Flyway Pro:在撤消运行之前
beforeEachUndo--Flyway Pro:在撤消期间每次迁移之前
afterEachUndo-- Flyway Pro:在撤消期间每次成功迁移之后
afterEachUndoError--Flyway Pro: 在撤消期间每次单个失败的迁移之后
afterUndo--Flyway Pro:成功撤消后运行
afterUndoError--Flyway Pro:失败后撤消运行
beforeClean:在Clean运行之前
afterClean:成功完成Clean运行后
afterCleanError: 清洁运行失败后
beforeInfo:在Info运行之前
afterInfo:成功运行Info之后
afterInfoError: 信息运行失败后
beforeValidate:在验证运行之前
afterValidate:成功验证运行后
afterValidateError:验证失败后运行
beforeBaseline:在Baseline运行之前
afterBaseline:成功完成Baseline运行后
afterBaselineError: 基线运行失败后
beforeRepair:在修复运行之前
afterRepair:修复运行成功后
afterRepairError: 修复运行失败后
回调可以用SQL或Java实现。
SQL回调
可以使用Flyway生命周期最方便的方法是通过SQL回调。这些只是遵循某种命名约定的配置位置中的sql文件:事件名称后跟SQL迁移命名后缀。
使用默认设置,Flyway会加载其默认位置(<安装目录> / SQL)的文件到命令行工具),如beforeMigrate.sql,beforeEachMigrate.sql,afterEachMigrate.sql,...
占位符替换的工作方式与SQL迁移的工作方式相同。
另外回调还可以包括描述。在这种情况下,回调名称由事件名称,分隔符,描述和后缀组成。示例:beforeRepair__vacuum.sql。
当找到同一事件的多个SQL回调时,它们将按其描述的顺序执行。
注意:在扫描SQL回调文件时,Flyway还会尊重您配置的sqlMigrationSuffixes属性。。
Java回调
如果SQL Callbacks不够灵活,您可以选择自己实现 Callback 接口。您甚至可以在生命周期中挂载多个Callback实现。
更多信息: 基于Java的回调 </ p>
本文暂时没有评论,来添加一个吧(●'◡'●)