SpringBoot启动报错:Requested bean is currently in creation: Is there an unresolvable circular reference?

本文解决SpringBoot2.0+MyBatis+MySql多数据源配置时出现的“BeanCurrentlyInCreationException”错误。分析原因在于两个数据源配置冲突,导致Spring无法确定使用哪一个。通过排除自动配置数据源解决。
摘要由CSDN通过智能技术生成

SpringBoot启动报错:Requested bean is currently in creation: Is there an unresolvable circular reference?

SpringBoot2.0+MyBatis+MySql的多数据源配置报错,报错如下:

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'dynamicDataSource': Requested bean is currently in creation: Is there an unresolvable circular reference?
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:339)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:215)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1251)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getIfUnique(DefaultListableBeanFactory.java:1905)
    at org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker.getDataSourceInitializer(DataSourceInitializerInvoker.java:96)
    at org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker.afterPropertiesSet(DataSourceInitializerInvoker.java:60)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774)
    ... 115 more

初步估计出现报错的原因是:出现了两个对数据库数据源的配置(项目配置了多数据源配置),一个是spring(或者是MyBatis)的数据源配置,另一个是我们自己的写的对多数据源的的管理配置。而Spring在项目启动的时候,在Bean容器里面出现了spring自动注入的一个管理数据源的Bean,还有一个就是我们自己项目中写的对数据源管理的Bean,所以我们在Mapper中获取Bean的时候不知道去获取哪个Bean或者重复获取Bean,就会造成上面的报错信息出现。(以上是自己的一些理解,不知道对不对,有大神知道具体较为详细的细节可以解释一下具体原因)

解决方案:在启动类添加

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })

该注解的作用是取消自动注入数据源的配置(取消数据库配置)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值