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: druidDemodatasource:url: jdbc:mysql://rm-xxxxxxx.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: 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_StatFilterlog-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%AEenabled: true # 是否开启 StatViewServletlogin-username: root # 账号login-password: root # 密码

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

@SpringBootTest

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

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

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

多数据源配置

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

spring:application:name: druidDemodatasource:mall:url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 数据库账号password: root0319@ # 数据库密码type: com.alibaba.druid.pool.DruidDataSource # 设置类型为 DruidDataSourcemin-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-8driver-class-name: com.mysql.jdbc.Driverusername: 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_StatFilterlog-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%AEenabled: true # 是否开启 StatViewServletlogin-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;@Testpublic 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等。

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

druid 多数据源_Druid连接池的使用以及注意事项相关推荐

  1. 数据源(连接池)开发步骤

    开发步骤 ①导入数据源的坐标和数据库驱动坐标 ②创建数据源对象 ③设置数据源的基本连接数据 ④使用数据源获取连接资源和归还连接资源 数据源的手动创建 ①导入c3p0和druid的坐标 <!-- ...

  2. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  3. 《深入理解Mybatis原理》 02-Mybatis数据源与连接池

    对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyB ...

  4. druid连接池mysql自动关闭_druid连接池

    近期一直报连接池连接的错误,主要就是那个什么last packet 多少ms以前. 所以就研究了下. druid连接池和mysql的连接关系可以简单理解为下面的案例. 有10个接线员A和远程10个接口 ...

  5. 数据源(连接池)的作用

    数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP.C3P0.BoneCP. ...

  6. JPA 多数据源 ,hikari 连接池 亲测可用

    我的sprintboot版本是 2.5.4,最近因业务要求要做多数据源.持久层框架必须是JPA,连接池定为hikari. 之前做过 mybatis + ​Druid​,没用过 JPA + hikari ...

  7. flowable更换数据源与连接池

    Spring Boot的约定大于配置.默认情况下,如果classpath中只有H2,就会创建内存数据库,并传递给Flowable流程引擎配置. 可以简单地通过提供Datasource bean来覆盖默 ...

  8. mybatis 原理_深入理解MyBatis原理 MyBatis数据源与连接池

    点击上方"程序开发者社区"关注,选择"设为星标" 第一时间送达实用干货 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文 ...

  9. spring数据源、连接池配置

    Spring提供了两个这样的数据源(都位于org.springframework.jdbc.datasource程序包里): DriverManagerDataSource:在每个连接请求时都新建一个 ...

最新文章

  1. 11.11大促来袭,京东如何保障云安全?
  2. 算法----------最长上升子序列(Java 版本)
  3. 将Python字符串生成PDF
  4. React state和props使用场景
  5. oracle试图执行计划,Oracle SQL优化与调优之显示执行计划(上)
  6. 中移动总裁李跃:发展Wifi才是长久之计
  7. Internal table 备忘
  8. RouteOS 频繁自启
  9. 解决虚拟机内服务器卡顿,不流畅问题
  10. 苹果 ios mdm服务器搭建
  11. 图片转excel软件有哪些?这些软件你值得拥有
  12. redis-----简单介绍---基本的配置---持久化----学习笔记
  13. 纯css三层侧边栏效果
  14. 闰年和平年的区别python_连续四年中一定有一个闰年吗
  15. C++OJ题:定义哺乳动物类Mammal和Dog类
  16. Oracle递归查询的原理
  17. 苹果发布会2014发布会简单总结
  18. Python描述 LeetCode 1037. 有效的回旋镖
  19. java获取所有进程_Java 获取系统的进程列表
  20. biubiu~~~~~文件操作来喽

热门文章

  1. 小数向上_【实操技巧】社保计算方法:向上取整见分进角(上)
  2. 怎样知道邮箱的端口_AllenNLP源码拓展——训练结束向邮箱发邮件
  3. python编写数学公式大全_python - 用python编写数学公式 - 堆栈内存溢出
  4. mysql 子查询概念_聊聊MySQL的子查询
  5. android 多屏幕 设计翻译,android Supporting multiple screen翻译一
  6. c语言笔记照片_C语言学习笔记
  7. python限定方法参数类型、返回值类型、变量类型
  8. python 统计使用技巧
  9. php流量中转,中转Webshell绕过流量检测防护
  10. oracle中存在函数吗,Oracle中的函数