Spring Boot 1.4: метод выполнения После завершения Liquibase
У меня есть проект Spring Boot 1.4.0, который использует Liquibase.
Можно ли выполнить метод после завершения liquibase?
Что-то вроде постпроцессора Bean?
Что я хочу сделать, это добавить некоторые данные в мою базу данных, когда приложение запускается в режиме разработки. В режиме разработки приложение использует базу данных h2 в памяти, поэтому liquibase должна создать таблицы, прежде чем я смогу записать свои данные.
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, проверьте документацию, пожалуйста!)Оба являются атрибутами наборов изменений.
Это мое собственное предпочтительное решение для такого рода вариант развития событий.