目前我正在使用liquibase.integration.spring.SpringLiquibase bean将Liquibase与我的spring应用程序集成从java doc,知道有一个属性sqlOutputDir到该bean类,以便sql可以输出到外部文件是合理的.但是,最新的2.0.5中...
目前我正在使用liquibase.integration.spring.SpringLiquibase bean将Liquibase与我的spring应用程序集成
从java doc,知道有一个属性sqlOutputDir到该bean类,以便sql可以输出到外部文件是合理的.
但是,最新的2.0.5中似乎不存在该功能.
所以,问题是,将changeLog sql输出到外部文件的当前等效方法或函数是什么,或者该功能是否已被完全删除?
请提示,非常感谢.
解决方法:
用于编写SQL输出的等效Java命令是:Liquibase #update(String,Writer).您可以通过继承SpringLiquibase并覆盖afterPropertiesSet,在Spring应用程序中调用此方法.例如:
@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();
}
}
对update(String,Writer)的调用将执行您的更改集而不实际更新数据库.对super.afterPropertiesSet的调用实际上将执行liquibase更新.
我注意到你在SpringLiquibase中引用的javadoc提到了writeSqlFileEnabled和sqlOutputDir属性.显然,这些已被删除,但javadoc未更新(见CORE-1104).我不确定这些选项被删除的原因或者预期的替代品是什么.我发现liquibase日志记录有点不足,所以这种方法对于记录(调试)liquibase SQL输出可能很有用.
本文标题为:java – LiquiBase – 将更改log sql输出到2.0.5中的文件的任何方法?
- Lambda表达式的使用及注意事项 2023-02-10
- new出来的对象中无法使用@autowired进行对象bean注入问题 2022-11-01
- Spring入门到精通之注解开发详解 2023-02-19
- SpringCloud安装Nacos完成配置中心 2023-02-28
- JSP开发之Struts2实现下载功能的实例 2023-08-01
- ExecutorService Callable Future多线程返回结果原理解析 2023-06-01
- SpringBoot2开启Actuator端点监控的方法 2022-12-27
- 微服务Spring Boot 整合Redis 阻塞队列实现异步秒杀下单思路详解 2023-06-30
- java – 带有Liberty Profile的JSR 352 – 如何在ItemReader执行数据库查询时实现检查点 2023-11-03
- Java之面向对象的思想、类与对象及其应用、对象的内存图、成员变量和局部变量的区别、匿名对象、封装(private)、this关键字 2023-09-01