
Spring Boot 4, Flyway и Postgres: как не стрелять по ногам
good_vladik 8 минут назад Spring Boot 4, Flyway и Postgres: как не стрелять по ногам Средний 12 мин 140 Java * Kotlin * Микросервисы * Туториал По Flyway миграциям уже написано много туториалов: как их называть, куда...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: good_vladik 8 минут назад Spring Boot 4, Flyway и Postgres: как не стрелять по ногам Средний 12 мин 140 Java * Kotlin * Микросервисы * Туториал По Flyway миграциям уже написано много туториалов: как их называть, куда класть и зачем нужна таблицаflyway_schema_history. Это полезно, но сегодня мы закопаемся поглубже в детали актуальной интеграции Flyway в приложение. В этой статье не будет пересказа базовых команд Flyway.
Вместо этого разберем несколько интересных нюансов:что приносят и как устроены spring-boot-starter-flyway и spring-boot-starter-flyway-test;зачем нужны flyway-database-postgresql и другие адаптеры;как настройка transactional-lock влияет на нашу жизнь;какие бонусные фичи может нам предложить flyway в spring boot сервисе. Признаюсь честно: триггером к детальному разбору Flyway и его настройкам послужила весьма банальная проблема с зависшей миграцией. Простое создание индекса намертво не давало запуститься моему сервису.
Технические детали
Хочу поделиться этим опытом и сэкономить другим часы жизни. Постараемся внедрить Flyway в Spring Boot 4. И посмотрим на интересные фичи.
x и новые стартерыНачинаем с базы. Раньше требовалось подключить flyway-core + flyway-database-postgresql (или другой адаптер). x изменилась модель зависимостей: многие интеграции получили собственные main/test starters.
Теперь используется отдельный spring-boot-starter-flyway, это часть общей модульной перестройки Если заглянуть в зависимости starter’а, там нет большого сюрприза:spring-boot-starter-flyway ├─ spring-boot-starter ├─ spring-boot-starter-jdbc ├─ spring-boot-flyway └─ spring-boot-jdbc Auto-configuration включается при нескольких условиях:в classpath есть org. Flyway;есть подходящий DataSource или отдельные connection details для Flyway;spring. После этого Boot не просто вызывает Flyway.
Отраслевые последствия
configure() и запускает миграции. Он собирает полноценный Flyway bean из нескольких источников конфигурации. Происходит примерно следующее:берется основной DataSource приложения или отдельный DataSource, указанный для Flyway;читаются значения из spring.
* настроек;из Spring context подхватываются callbacks и Java migrations;пользовательские FlywayConfigurationCustomizer получают последний шанс изменить конфигурацию;после этого создается готовый объект Flyway, который Spring Boot сможет запустить при старте приложения. Callbacks и Java migrations можно подключать как Spring beans (об этом ниже). Это удобно, когда callback должен использовать инфраструктуру приложения.
Зачем нужен flyway-database-postgresqlНачиная с новых версий Flyway поддержка многих баз вынесена в отдельные plugin modules.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





