Flyway:同时使用自定义和 Java 回调
Flyway: Using both custom and Java Callbacks
如果我指定
flyway.callbacks=com.myclass.CustomCallBack
它被调用得很好,但我注意到它似乎抑制了 SQL 回调功能。有什么办法可以兼得吗?我注意到有一个 SqlScriptFlywayCallback,但那是你的 'internal' 类...
目前唯一的方法是同时引用内部 class 和您自己的。请在问题跟踪器中提交增强请求。
作为一种简单的解决方法,您可以按照 Axel 的建议初始化 SqlScriptFlywayCallback。给定一个初始化的 flyway 实例,这是我的做法:
DbSupport dbSupport;
try {
dbSupport = DbSupportFactory.createDbSupport(flyway.getDataSource().getConnection(), false);
} catch (SQLException e) {
throw new RuntimeException("Could not get connection to database");
}
final FlywayCallback runSqlCallbacks = new SqlScriptFlywayCallback(
dbSupport,
flyway.getClassLoader(),
new Locations(flyway.getLocations()),
new PlaceholderReplacer(flyway.getPlaceholders(),
flyway.getPlaceholderPrefix(),
flyway.getPlaceholderSuffix()),
flyway.getEncoding(),
flyway.getSqlMigrationSuffix()
);
flyway.setCallbacks(
runSqlCallbacks,
new MyCallback(...));
如果我指定
flyway.callbacks=com.myclass.CustomCallBack
它被调用得很好,但我注意到它似乎抑制了 SQL 回调功能。有什么办法可以兼得吗?我注意到有一个 SqlScriptFlywayCallback,但那是你的 'internal' 类...
目前唯一的方法是同时引用内部 class 和您自己的。请在问题跟踪器中提交增强请求。
作为一种简单的解决方法,您可以按照 Axel 的建议初始化 SqlScriptFlywayCallback。给定一个初始化的 flyway 实例,这是我的做法:
DbSupport dbSupport;
try {
dbSupport = DbSupportFactory.createDbSupport(flyway.getDataSource().getConnection(), false);
} catch (SQLException e) {
throw new RuntimeException("Could not get connection to database");
}
final FlywayCallback runSqlCallbacks = new SqlScriptFlywayCallback(
dbSupport,
flyway.getClassLoader(),
new Locations(flyway.getLocations()),
new PlaceholderReplacer(flyway.getPlaceholders(),
flyway.getPlaceholderPrefix(),
flyway.getPlaceholderSuffix()),
flyway.getEncoding(),
flyway.getSqlMigrationSuffix()
);
flyway.setCallbacks(
runSqlCallbacks,
new MyCallback(...));