Spring Boot 1.4:Liquibase完成后的执行方法

2022-09-03 17:20:28

我有一个基于Spring Boot 1.4.0的项目,它使用Liquibase。

是否可以在液化基完成后执行方法?

像Bean Post Processor这样的东西?

我想做的是在开发模式下启动应用程序时向数据库中添加一些数据。在开发模式下,应用程序使用内存中的h2数据库,因此liquibase必须先创建表,然后才能写入数据。


答案 1

Spring Boot 自动配置一个名为 的 Bean。任何依赖于此bean的bean都将在Liquibase完成后创建。例如,您可以使用 来填充数据库:SpringLiquibaseliquibase@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");
    }

}

答案 2

另一个解决方案是让LiquiBase将这些东西插入到你的数据库中 - 但只有在开发模式下运行时。

您可以通过指定属性在 LiquiBase 中执行此操作。context=""

另一种选择是让LiquiBase仅在以下情况下将此测试数据插入到数据库中(忘记选择h2的确切字符串是什么,请检查文档!dbms="h2db"

两者都是变更集上的属性。

对于这种情况,这是我自己的首选解决方案。


推荐