首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有弹簧引导的飞道核心给出了错误循环-取决于'delayedFlywayInitializer‘和'entityManagerFactory’之间的关系。

带有弹簧引导的飞道核心给出了错误循环-取决于'delayedFlywayInitializer‘和'entityManagerFactory’之间的关系。
EN

Stack Overflow用户
提问于 2020-11-24 15:58:57
回答 1查看 4.3K关注 0票数 5

我想在SQL服务器数据库上导入一些数据,我使用SpringBoot2.3.4。我还使用Hibernate来生成表。

我在pom中添加了立交桥核心:

代码语言:javascript
运行
复制
 <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
    </dependency>

创建配置文件:

代码语言:javascript
运行
复制
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上创建了一个文件

现在我有了这个错误

代码语言:javascript
运行
复制
    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

我不知道怎么解决这个问题,我寻找解决办法,但做不到。有人能帮帮我吗?

EN

Stack Overflow用户

发布于 2021-09-18 13:53:06

很可能是通过添加以下内容来推迟数据源初始化:

代码语言:javascript
运行
复制
spring.jpa.defer-datasource-initialization =true #set it to false

在你的应用程序中。

  • 移除它,或设置为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->天桥

票数 11
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64990131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档