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

Spring Boot 1.4: Executing Method after Liquibase finished

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

是否可以在 liquibase 完成后执行方法?

类似于 Bean Post 处理器?

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

Spring 引导自动配置一个名为 liquibaseSpringLiquibase bean。任何依赖于这个 bean 的 bean 都将在 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 仅在 dbms="h2db" 时将此测试数据插入您的数据库(忘记 select h2 的确切字符串是什么,请查看文档!)

两者都是变更集的属性。

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