Spring Boot отложил циклическую зависимость инициализации Flyway - PullRequest
3 голосов
/ 22 октября 2019

Мне нужно выполнить миграцию Flyway после того, как Hibernate сгенерирует всю таблицу схем. До перехода на Spring Boot 2.2 этот код работал нормально

@Configuration
public class BaseFlywayConfiguration {

    /**
     * Override default flyway initializer to do nothing
     */
    @Bean
    FlywayMigrationInitializer flywayInitializer(Flyway flyway) {
        return new FlywayMigrationInitializer(flyway, (f) -> {
        });
    }

    /**
     * Create a second flyway initializer to run after jpa has created the schema
     */
    @Bean
    @DependsOn("transactionManager")
    FlywayMigrationInitializer delayedFlywayInitializer(Flyway flyway) {
        return new FlywayMigrationInitializer(flyway, null);
    }

}

К сожалению, после перехода на Spring Boot 2.2.0 я получаю исключение, связанное с циклической зависимостью

Это журнал:

Зависимости некоторых компонентов в контексте приложения образуют цикл:

┌────── |TransactionManager определен в ресурсе пути к классу [com / myFleetSolutions / myFleet / organization / configuration / jpa / JPAConfigurationDev.class] 101─────┘

Как я могу это решить?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Я просто ввел bean-компонент Flyway в класс @SpringBootApplication и выполнил flyway.migrate () в методе инициализации CommandLineRunner. Он выполняется в конце запуска системы и работает нормально

Спасибо

Антонио

0 голосов
/ 22 октября 2019

В идеале, вы должны создать всю свою схему (таблицу, последовательность и т. Д.) На лету и не использовать Hibernate для ее генерации. Я бы порекомендовал экспортировать вашу текущую схему, а затем создать V1__init-schema.sql для flyway для init. Затем установите hibernate.hbm2ddl.auto для проверки или отсутствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...