junior
Как интегрировать Liquibase со Spring Boot?
Интеграция Liquibase со Spring Boot сводится к добавлению зависимости и настройке свойств — автоконфигурация Spring Boot делает остальное.
Подключение зависимости
Пример
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
В Spring Boot Starter уже есть автоконфигурация — достаточно добавить зависимость, и Liquibase запустится автоматически при старте приложения.
Основные свойства (application.properties)
Полный список свойств
# Путь к master changelog (по умолчанию classpath:db/changelog/db.changelog-master.yaml)
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
# Включить/отключить Liquibase (по умолчанию true)
spring.liquibase.enabled=true
# Контексты для выполнения
spring.liquibase.contexts=dev
# Метки для фильтрации
spring.liquibase.label-filter=release-1.0
# Схема по умолчанию
spring.liquibase.default-schema=public
# Схема для служебных таблиц Liquibase
spring.liquibase.liquibase-schema=liquibase
# Удалить все объекты перед миграцией (осторожно! только для тестов)
spring.liquibase.drop-first=false
# Отдельный источник данных для Liquibase (если нужен другой пользователь)
spring.liquibase.url=jdbc:postgresql://localhost:5432/mydb
spring.liquibase.user=liquibase_admin
spring.liquibase.password=secret
# Параметры для подстановки в changelog
spring.liquibase.parameters.env=dev
Пример application.yml
Пример
spring:
liquibase:
change-log: classpath:db/changelog/db.changelog-master.xml
enabled: true
contexts: ${LIQUIBASE_CONTEXTS:dev}
default-schema: public
Порядок работы
- При старте приложения Spring Boot автоматически запускает
SpringLiquibasebean - Liquibase подключается к БД, используя
DataSourceприложения (или отдельный, если указан) - Создаёт служебные таблицы (если их нет)
- Проверяет и применяет невыполненные changeset-ы
- Только после успешного завершения миграций приложение продолжает старт
Если миграция завершилась ошибкой, приложение не запустится — это правильное поведение, так как работа с несогласованной схемой БД недопустима.
На собеседовании: интервьюер ожидает, что вы знаете путь к changelog по умолчанию и понимаете, что миграции выполняются до старта приложения. Частая ошибка — не знать, что при ошибке миграции приложение не поднимется.