Gymterview
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

Порядок работы

  1. При старте приложения Spring Boot автоматически запускает SpringLiquibase bean
  2. Liquibase подключается к БД, используя DataSource приложения (или отдельный, если указан)
  3. Создаёт служебные таблицы (если их нет)
  4. Проверяет и применяет невыполненные changeset-ы
  5. Только после успешного завершения миграций приложение продолжает старт

Если миграция завершилась ошибкой, приложение не запустится — это правильное поведение, так как работа с несогласованной схемой БД недопустима.

На собеседовании: интервьюер ожидает, что вы знаете путь к changelog по умолчанию и понимаете, что миграции выполняются до старта приложения. Частая ошибка — не знать, что при ошибке миграции приложение не поднимется.