druid 多数据源_Druid连接池的使用以及注意事项
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连接池的使用以及注意事项相关推荐
- 数据源(连接池)开发步骤
开发步骤 ①导入数据源的坐标和数据库驱动坐标 ②创建数据源对象 ③设置数据源的基本连接数据 ④使用数据源获取连接资源和归还连接资源 数据源的手动创建 ①导入c3p0和druid的坐标 <!-- ...
- 深入理解Spring Boot数据源与连接池原理
Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...
- 《深入理解Mybatis原理》 02-Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyB ...
- druid连接池mysql自动关闭_druid连接池
近期一直报连接池连接的错误,主要就是那个什么last packet 多少ms以前. 所以就研究了下. druid连接池和mysql的连接关系可以简单理解为下面的案例. 有10个接线员A和远程10个接口 ...
- 数据源(连接池)的作用
数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP.C3P0.BoneCP. ...
- JPA 多数据源 ,hikari 连接池 亲测可用
我的sprintboot版本是 2.5.4,最近因业务要求要做多数据源.持久层框架必须是JPA,连接池定为hikari. 之前做过 mybatis + Druid,没用过 JPA + hikari ...
- flowable更换数据源与连接池
Spring Boot的约定大于配置.默认情况下,如果classpath中只有H2,就会创建内存数据库,并传递给Flowable流程引擎配置. 可以简单地通过提供Datasource bean来覆盖默 ...
- mybatis 原理_深入理解MyBatis原理 MyBatis数据源与连接池
点击上方"程序开发者社区"关注,选择"设为星标" 第一时间送达实用干货 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文 ...
- spring数据源、连接池配置
Spring提供了两个这样的数据源(都位于org.springframework.jdbc.datasource程序包里): DriverManagerDataSource:在每个连接请求时都新建一个 ...
最新文章
- 11.11大促来袭,京东如何保障云安全?
- 算法----------最长上升子序列(Java 版本)
- 将Python字符串生成PDF
- React state和props使用场景
- oracle试图执行计划,Oracle SQL优化与调优之显示执行计划(上)
- 中移动总裁李跃:发展Wifi才是长久之计
- Internal table 备忘
- RouteOS 频繁自启
- 解决虚拟机内服务器卡顿,不流畅问题
- 苹果 ios mdm服务器搭建
- 图片转excel软件有哪些?这些软件你值得拥有
- redis-----简单介绍---基本的配置---持久化----学习笔记
- 纯css三层侧边栏效果
- 闰年和平年的区别python_连续四年中一定有一个闰年吗
- C++OJ题:定义哺乳动物类Mammal和Dog类
- Oracle递归查询的原理
- 苹果发布会2014发布会简单总结
- Python描述 LeetCode 1037. 有效的回旋镖
- java获取所有进程_Java 获取系统的进程列表
- biubiu~~~~~文件操作来喽
热门文章
- 小数向上_【实操技巧】社保计算方法:向上取整见分进角(上)
- 怎样知道邮箱的端口_AllenNLP源码拓展——训练结束向邮箱发邮件
- python编写数学公式大全_python - 用python编写数学公式 - 堆栈内存溢出
- mysql 子查询概念_聊聊MySQL的子查询
- android 多屏幕 设计翻译,android Supporting multiple screen翻译一
- c语言笔记照片_C语言学习笔记
- python限定方法参数类型、返回值类型、变量类型
- python 统计使用技巧
- php流量中转,中转Webshell绕过流量检测防护
- oracle中存在函数吗,Oracle中的函数