Spring Boot 1.4: метод выполнения После завершения Liquibase


У меня есть проект Spring Boot 1.4.0, который использует Liquibase.

Можно ли выполнить метод после завершения liquibase?

Что-то вроде постпроцессора Bean?

Что я хочу сделать, это добавить некоторые данные в мою базу данных, когда приложение запускается в режиме разработки. В режиме разработки приложение использует базу данных h2 в памяти, поэтому liquibase должна создать таблицы, прежде чем я смогу записать свои данные.

2 4

2 ответа:

Spring Boot автоматически настраивает Боб SpringLiquibase с именем liquibase. Любой боб, который зависит от этого боба, будет создан после завершения 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 вставить эти вещи в вашу базу данных - но только при работе в dev-режиме.

Это можно сделать в LiquiBase, указав атрибут context="".

Другой вариант-позволить LiquiBase только вставить эти тестовые данные в вашу базу данных, когда dbms="h2db" (забыл, какая именно строка должна выбрать h2, проверьте документацию, пожалуйста!)

Оба являются атрибутами наборов изменений.

Это мое собственное предпочтительное решение для такого рода вариант развития событий.