【150】SpringBoot 2.3.0 数据源循环引用错误的解决方法

错误重现

控制台打印的错误信息

Description:

The dependencies of some of the beans in the application context form a cycle:

   projectingArgumentResolverBeanPostProcessor defined in class path resource [org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class]
      ↓
   org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration
      ↓
   myBatisConfig (field com.centling.consumer.druid.DynamicDataSource com.centling.consumer.config.MyBatisConfig.dataSource)
┌─────┐
|  dataSource defined in class path resource [com/centling/consumer/druid/DynamicDataSourceConfig.class]
↑     ↓
|  defaultDataSource defined in class path resource [com/centling/consumer/druid/DynamicDataSourceConfig.class]
↑     ↓
|  org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker
└─────┘

JAVA代码:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication
@ServletComponentScan
@EnableCaching // 开启缓存
@EnableAsync //开启异步调用
@EnableTransactionManagement
@EnableAutoConfiguration
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

yml文件:

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://192.168.1.135:3606/your_database?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: root
        password: yourpassword
        druid:
            initial-size: 10
            max-active: 100
            min-idle: 10
            max-wait: 60000
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            stat-view-servlet:
                enabled: true
                url-pattern: /druid/*
            filter:
                stat:
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true

解决方法

只需要改Java代码就可以了。

@SpringBootApplication
@ServletComponentScan
@EnableCaching // 开启缓存
@EnableAsync //开启异步调用
@EnableTransactionManagement
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) // 更改这一行,就可以避免循环引用错误了。
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

注意改下面一行,就可以了。

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) // 更改这一行,就可以避免循环引用错误了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值