Spring Boot 1.4:Liquibase完成后的执行方法
2022-09-03 17:20:28
我有一个基于Spring Boot 1.4.0的项目,它使用Liquibase。
是否可以在液化基完成后执行方法?
像Bean Post Processor这样的东西?
我想做的是在开发模式下启动应用程序时向数据库中添加一些数据。在开发模式下,应用程序使用内存中的h2数据库,因此liquibase必须先创建表,然后才能写入数据。
我有一个基于Spring Boot 1.4.0的项目,它使用Liquibase。
是否可以在液化基完成后执行方法?
像Bean Post Processor这样的东西?
我想做的是在开发模式下启动应用程序时向数据库中添加一些数据。在开发模式下,应用程序使用内存中的h2数据库,因此liquibase必须先创建表,然后才能写入数据。
Spring Boot 自动配置一个名为 的 Bean。任何依赖于此bean的bean都将在Liquibase完成后创建。例如,您可以使用 来填充数据库:SpringLiquibase
liquibase
@PostConstruct
@Bean
@DependsOn("liquibase")
public YourBean yourBean() {
return new YourBean();
}
static class YourBean {
@PostConstruct
public void populateDatabase() {
System.out.println("This will be called after Liquibase has finished");
}
}
另一个解决方案是让LiquiBase将这些东西插入到你的数据库中 - 但只有在开发模式下运行时。
您可以通过指定属性在 LiquiBase 中执行此操作。context=""
另一种选择是让LiquiBase仅在以下情况下将此测试数据插入到数据库中(忘记选择h2的确切字符串是什么,请检查文档!dbms="h2db"
两者都是变更集上的属性。
对于这种情况,这是我自己的首选解决方案。