考虑定义一个 'org.flywaydb.core.Flyway' 类型的 bean

Consider defining a bean of type 'org.flywaydb.core.Flyway'

我有一个 Spring 引导项目,其中 Flyway 与 JPA 一起使用。

<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-core</artifactId>
</dependency>

该项目运行绝对没问题。由于某些要求,我不得不更改 Flyway 加载的顺序,以便它在 Hibernate 之后加载。我搜索并找到了以下解决方案 link 中建议的答案创建了 MigrationConfiguration。现在,当我 运行 应用程序时,它会给我以下错误,

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method flywayInitializer in 
com.x2iq.microservice.config.MigrationConfiguration required a bean of type 
'org.flywaydb.core.Flyway' that could not be found.


Action:

Consider defining a bean of type 'org.flywaydb.core.Flyway' in your 
configuration.

现在我对 Spring Boot 还很陌生,所以无法理解这个错误,而且我在网上找不到与此错误相关的任何内容。

@Configuration class 中,您可能希望将 Flyway Bean 暴露给容器。这样的事情应该可以解决问题:

@Configuration 
public class MigrationConfiguration {

    @Bean
    public Flyway flyway(){
        return new Flyway();
    }
}

参考下面link :

Spring flyway bean 已给出配置。

https://flywaydb.org/documentation/api/

我的项目示例:

<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
    <property name="baselineOnMigrate" value="true" />
    <property name="locations" value="classpath:db/migration" />
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${db.driver}"/>
    <property name="url" value="${db.url}"/>
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
</bean>