我有一个Spring Boot项目,其中Flyway与JPA一起使用。
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
该项目运行得非常好。由于一些要求,我不得不改变Flyway加载的顺序,以便在Hibernate之后加载它。我搜索并找到了以下解决方案https://stackoverflow.com/a/44806540/1361888
。我在上面的链接中按照建议的答案创建了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相当新,所以无法理解这个错误,我在网上找不到任何与此错误有关的内容。
答案 0 :(得分:2)
在@Configuration
类中,您希望将Flyway Bean暴露给容器。这样的事情可以解决问题:
@Configuration
public class MigrationConfiguration {
@Bean
public Flyway flyway(){
return new Flyway();
}
}
答案 1 :(得分:0)
请参考以下链接:
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>