我想在SQL服务器数据库上导入一些数据,我使用SpringBoot2.3.4。我还使用Hibernate来生成表。
我在pom中添加了立交桥核心:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
创建配置文件:
import org.flywaydb.core.Flyway;
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer;
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
@Configuration
public class FlyWayConfiguration {
@Bean
FlywayMigrationInitializer flywayInitializer(Flyway flyway) {
return new FlywayMigrationInitializer(flyway, (f) ->{} );
}
@Bean
@DependsOn("entityManagerFactory")
FlywayMigrationInitializer delayedFlywayInitializer(Flyway flyway) {
return new FlywayMigrationInitializer(flyway, new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.migrate();
}
});
}
}
我在resources/db/migration/V1_0_1__InitialData.sql
上创建了一个文件
现在我有了这个错误
Error creating bean with name 'delayedFlywayInitializer' defined in class path resource
[com/ikun/mkj/config/MigrationConfiguration.class]: Circular depends-on relationship between
'delayedFlywayInitializer' and 'entityManagerFactory' at
org.springframework.beans.factory.support.AbstractBeanFactory
我不知道怎么解决这个问题,我寻找解决办法,但做不到。有人能帮帮我吗?
发布于 2021-09-18 13:53:06
很可能是通过添加以下内容来推迟数据源初始化:
spring.jpa.defer-datasource-initialization =true #set it to false
在你的应用程序中。
如参考文献所示:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html
将Spring.jpa.Delay-数据源-初始化设置为true。这将将数据源初始化推迟到创建和初始化任何EntityManagerFactory been之后。然后,可以使用schema.sql对Hibernate执行的任何模式创建进行添加,并且可以使用data.sql填充它。
默认情况下,Flyway依赖于Datasource,而Datasource在延迟模式下将等待EntityManagerFactory和Ofc,因为我们使用了天桥,默认情况下在Jpa之前启动flyway以确保DB的一致性。
所以我们有一个循环依赖的天桥->DS->EMF->天桥
https://stackoverflow.com/questions/64990131
复制相似问题