Dre*_*mer 4 java spring liquibase
目前我正在使用liquibase.integration.spring.SpringLiquibasebean 将Liquibase与我的spring应用程序集成
从java doc,tt似乎有理由知道sqlOutputDir该bean类有一个属性,以便sql可以输出到外部文件.
但是,最新的2.0.5中似乎不存在该功能.
所以,问题是,equivalent method or function将changeLog sql输出到外部文件的当前是什么,或者该功能是否已被彻底删除?
请提示,非常感谢.
用于编写SQL输出的等效Java命令是:Liquibase#update(String, Writer).您可以通过子类化SpringLiquibase和重写在Spring应用程序中调用此方法afterPropertiesSet.例如:
@Bean
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibaseWriter();
// ...
return liquibase;
}
private static class SpringLiquibaseWriter extends SpringLiquibase {
@Override
public void afterPropertiesSet() throws LiquibaseException {
try (Connection connection = getDataSource().getConnection()) {
Liquibase liquibase = createLiquibase(connection);
Writer writer; // ... get writer
liquibase.update(getContexts(), writer);
// ...
} catch (LiquibaseException | SQLException e) {
// handle
}
super.afterPropertiesSet();
}
}
Run Code Online (Sandbox Code Playgroud)
调用update(String,Writer)将执行您的更改集而不实际更新数据库.调用super.afterPropertiesSet将实际执行liquibase更新.
我确实注意到你提到的javadocSpringLiquibase提到了writeSqlFileEnabled和sqlOutputDir属性.显然,这些已被删除,但javadoc未更新(参见CORE-1104).我不确定这些选项被删除的原因或者预期的替代品是什么.我发现liquibase日志记录有点不足,所以这种方法对于记录(调试)liquibase SQL输出可能很有用.
| 归档时间: |
|
| 查看次数: |
4088 次 |
| 最近记录: |