springboot使用dynamic-datasource和druid配置多数据库连接及druid监控

该文章介绍了如何在SpringBoot应用中集成DynamicDataSource和Druid数据源管理工具,包括添加相关依赖、配置多数据源(如PostgreSQL和Clickhouse)以及Druid的详细配置参数,如连接池大小、监控等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、首先需要引入的jar包

<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
	<version>3.2.0</version>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.2.6</version>
</dependency>

二、spring yaml的配置,注意druid的缩进,错了不起作用

spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    dynamic:
      primary: postgresql  # 配置默认数据库
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        postgresql:
          url: jdbc:postgresql://127.0.0.1:5432/postgres?stringtype=unspecified
          username: postgres
          password: admin123
          driver-class-name: org.postgresql.Driver
          druid:
            initial-size: 10
            min-idle: 10
            max-active: 500
            max-wait: 60000
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
        clickhouse:
          url: jdbc:clickhouse://127.0.0.1:8123/default
          username: default
          password: admin123
          driver-class-name: ru.yandex.clickhouse.ClickHouseDriver
          druid:
            initial-size: 50
            min-idle: 50
            max-active: 2000
            max-wait: 120000
            time-between-eviction-runs-millis: 120000
            min-evictable-idle-time-millis: 600000
      druid:
        test-while-idle: false
        test-on-borrow: false
        test-on-return: false
        pool-prepared-statements: true
        filters: stat,wall,log4j2
    druid:
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: false
        login-username: admin
        login-password: admin123
        # StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
        # deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
        # 配置的格式
        # <IP>
        # 或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
        # 24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
        allow:
        deny:

三、下面是druid的其它配置参数,可以参考

spring:
  # 配置数据库信息
  datasource:
    # 数据源配置
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    # druid相关配置
    druid:
      # 初始化 最小 最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置多个英文逗号分隔
      filters: stat,wall
      # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
      # 是否启用StatFilter默认值true
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: false
        session-stat-max-count: 1000
        principal-cookie-name: admin
        principal-session-name: admin
        profile-enable: true
      # 根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html
      # http://loacalhsot:8081/druid
      stat-view-servlet:
        url-pattern: /druid/*  # 监控页面访问路径
        # 允许清空统计数据
        reset-enable: true
        login-username: admin
        login-password: 123456
        # StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
        # deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
        # 配置的格式
          # <IP>
          # 或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
          # 24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
        allow:
        deny:

<think>好的,我需要帮助用户检查他们的Spring Boot配置文件中关于数据库连接的部分是否存在错误。用户提供了他们的配置项,我需要逐一分析这些配置的正确性,并给出建议。 首先,用户提到的配置包括数据源类型、驱动类名称、数据库URL、用户名、密码以及MyBatis-Plus的日志配置。让我一个一个来看。 1. **spring.datasource.type=com.alibaba.druid.pool.DruidDataSource** 这里指定了使用Druid作为数据源,这是正确的配置。但需要注意是否在项目中引入了Druid的依赖。用户提供的引用[4]中提到在pom.xml添加了log4j的依赖,但没有提到Druid。可能需要检查pom.xml是否有Druid的依赖,比如`druid-spring-boot-starter`。 2. **spring.datasource.driver-class-name=com.mysql.jdbc.Driver** MySQL的JDBC驱动在较新版本中已经改为`com.mysql.cj.jdbc.Driver`,旧版本的驱动类虽然还能用,但建议更新。特别是如果使用的MySQL版本是8.x的话,必须使用新的驱动类,否则可能会有兼容性问题。 3. **spring.data.mongodb.uri=jdbc:mysql://localhost:3306/bishe?useSSL=false** 这里明显有错误。`spring.data.mongodb.uri`是用于MongoDB的连接,而用户却配置了MySQL的JDBC URL。这应该是笔误,正确的应该是`spring.datasource.url`。此外,MongoDB的URI格式通常是`mongodb://`开头,而不是JDBC的格式。 4. **spring.datasource.usernamepassword** 这两个配置项是正确的,只要数据库的用户名密码确实正确,并且该用户有访问指定数据库的权限。需要确认数据库是否在本地运行,端口是否为3306,以及数据库`bishe`是否存在。 5. **mybatis-plus.configuration.log-impl** 这里配置了MyBatis-Plus的日志实现,是正确的。该配置会将SQL语句打印到控制台,方便调试。需要确认项目中是否引入了MyBatis-Plus的依赖,并且版本兼容。 接下来,根据用户提供的引用内容,引用[1]中的错误日志显示数据库连接失败,可能的原因包括URL格式错误、驱动类不正确或网络问题。引用[2][4]提到了多数据源配置Druid使用,可能用户有多个数据源的需求,但当前配置中只配置了一个,需要注意是否遗漏其他配置。引用[3]是启动类,可能没有问题,但需要确认启动类的位置包结构是否正确。 总结需要指出的问题:驱动类建议更新,MongoDB URI配置错误,URL配置项错误,以及检查依赖是否正确引入。同时,需要提醒用户检查数据库服务是否运行,以及用户名密码是否正确。 最后,生成相关问题,可能涉及多数据源配置Druid依赖问题、MySQL驱动更新等。</think>### 检查Spring Boot数据源MyBatis-Plus配置的步骤及问题分析 #### 一、数据源配置检查 1. **Druid数据源依赖** 配置项`spring.datasource.type=com.alibaba.druid.pool.DruidDataSource`需要依赖`druid-spring-boot-starter`。需检查`pom.xml`是否包含以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.16</version> <!-- 版本需与项目兼容 --> </dependency> ``` 若未引入,会导致`DruidDataSource`初始化失败[^1]。 2. **JDBC驱动类名称** 配置`spring.datasource.driver-class-name=com.mysql.jdbc.Driver`已过时,**MySQL 8.x及以上版本需使用新驱动**: ```properties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 3. **数据库URL配置错误** - **错误项**:`spring.data.mongodb.uri=jdbc:mysql://...` MongoDB的URI格式应为`mongodb://`,而JDBC连接使用`spring.datasource.url`。 - **修正配置**: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/bishe?useSSL=false&serverTimezone=UTC ``` 4. **用户名与密码** `spring.datasource.username=root``spring.datasource.password=123456`需与实际数据库账号匹配,并确认数据库`bishe`是否存在。 #### 二、MyBatis-Plus配置检查 1. **日志配置正确性** `mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl`可正常输出SQL日志,但需确保已引入MyBatis-Plus依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> ``` #### 三、其他潜在问题 1. **多数据源冲突** 若项目需连接多个数据库(如MySQLMongoDB),需通过`dynamic-datasource-spring-boot-starter`实现多数据源管理[^2]。当前配置未体现多数据源逻辑,需检查是否需要补充。 2. **连接池参数缺失** Druid建议配置连接池参数(如初始大小、最大活跃连接数): ```properties spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 ``` 3. **日志框架冲突** 引用[4]中配置了Log4j,但Spring Boot默认使用Logback。需在`pom.xml`中排除Logback并显式引入Log4j2: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值