Druid连接池其实在网上一找一大堆文章,讲实话这里也只是作为自己记录下使用如何使用这个连接池。好的,废话不多说。

什么是Druid连接池?

Druid首先是一个数据库连接池。Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。内置了StatFilter功能,能采集非常完备的连接池执行信息,Druid连接池内置了一个监控页面,提供了非常完备的监控信息,可以快速诊断系统的瓶颈。

开始使用

我们简单的建立一个SpringBoot项目,引入Druid连接池。



<!--实现对 Druid 连接池的自动化配置-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.21</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>druid</artifactId>-->
<!--            <version>1.0.18</version>-->
<!--        </dependency>-->



druid-spring-boot-starter实现对 Druid 连接池的自动化配置,在application中进行配置



spring:
  application:
    name: druidDemo
  datasource:
    url: jdbc:mysql://rm-xxxxxxx.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.jdbc.Driver
    username: xxx # 数据库账号
    password: xxx@ # 数据库密码
    type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource
    # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性
    druid: # 设置 Druid 连接池的自定义配置。然后 DruidDataSourceAutoConfigure 会自动化配置 Druid 连接池。
      min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。
      max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。
      filter:
        stat: # 配置 StatFilter ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
          log-slow-sql: true # 开启慢查询记录
          slow-sql-millis: 5000 # 慢 SQL 的标准,单位:毫秒
          merge-sql: true # SQL合并配置
      stat-view-servlet: # 配置 StatViewServlet ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE
        enabled: true # 是否开启 StatViewServlet
        login-username: root # 账号
        login-password: root # 密码



其他的什么mapper啥的配置就不说了,相信给位大佬不用说都知道,毕竟都是经常写的东西。



@SpringBootTest



写个测试类执行以下就知道咯。

然后我们看下监控台,访问http://127.0.0.1:8080/druid/datasource.html登录后




druid连接池配置链接 mysql druid连接池的使用_druid连接池配置链接 mysql


奈斯,以后老大要我查看慢sql就用这个了。

多数据源配置

以上呢是配置的单数据源,那么有些场景呢需要使用到多数据源,这里说下多数据源druid怎么配置的。


spring:
  application:
    name: druidDemo
  datasource:
    mall:
      url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8
      driver-class-name: com.mysql.jdbc.Driver
      username: root # 数据库账号
      password: root0319@ # 数据库密码
      type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource
      min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。
      max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。
    # 用户数据源配置
    users:
      url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_user_center?useSSL=false&useUnicode=true&characterEncoding=UTF-8
      driver-class-name: com.mysql.jdbc.Driver
      username: root # 数据库账号
      password: root0319@ # 数据库密码
      type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSource
      # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性
      min-idle: 0 # 池中维护的最小空闲连接数,默认为 0 个。
      max-active: 20 # 池中最大连接数,包括闲置和使用中的连接,默认为 8 个。
    # Druid 自定义配置,对应 DruidDataSource 中的 setting 方法的属性
    druid: # 设置 Druid 连接池的自定义配置。然后 DruidDataSourceAutoConfigure 会自动化配置 Druid 连接池。
      filter:
        stat: # 配置 StatFilter ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
          log-slow-sql: true # 开启慢查询记录
          slow-sql-millis: 5000 # 慢 SQL 的标准,单位:毫秒
          merge-sql: true # SQL合并配置
      stat-view-servlet: # 配置 StatViewServlet ,对应文档 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE
        enabled: true # 是否开启 StatViewServlet
        login-username: root # 账号
        login-password: root # 密码


配置类


@Configuration
public class DataSourceConfig {
    /**
     * 创建 orders 数据源
     */
    @Primary
    @Bean(name = "mallDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.mall") // 读取 spring.datasource.mall配置到 HikariDataSource 对象
    public DataSource ordersDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    /**
     * 创建 users 数据源
     */
    @Bean(name = "usersDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.users")
    public DataSource usersDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

}


测试类中测试方法


private Logger logger = LoggerFactory.getLogger(DruidDemoApplicationTests.class);

    @Resource(name = "mallDataSource")
    private DataSource ordersDataSource;

    @Resource(name = "usersDataSource")
    private DataSource usersDataSource;

    @Test
    public void test() {
        // orders 数据源
        logger.info("[run][获得数据源:{}]", ordersDataSource.getClass());

        // users 数据源
        logger.info("[run][获得数据源:{}]", usersDataSource.getClass());

        int a = testMapper.test();
        System.out.println(a);
    }


这样就等于配置了多个数据源,具体的怎么用呢就要看具体的场景了。

其实多数据源的配置常用的有三种方式:


扩展Spring的AbstractRoutingDataSource
通过Mybatis 配置不同的 Mapper 使用不同的 SqlSessionTemplate
分库分表中间件,比如Sharding-JDBC 、Mycat等。


这里就不细说咯,后面我们用到了再来记录下使用过程。