【springboot】集成Druid 作为数据库连接池
转自:https://blog.csdn.net/cp026la/article/details/86508139
1. 引言
用户的每一次请求几乎都会访问数据库,访问数据库需要向数据库获取链接,而数据库创建连接是需要消耗资源的。数据库连接也是一种资源、使用数据库连接池等都是十分有必要的。本章小结一下Druid数据库连接池在SpringBoot1.5中的使用。
Druid 学习地址: https://github.com/alibaba/druid/wiki/FAQ 非常详细
2. 数据库连接池
C3P0、DBCP、Druid,这些是我常听的连接池,HikariCP 是近些年起来的连接池,是java性能方面最优的,springboot2.0 开始对它做了支持,而Druid 连接池内部使用的是公平锁,性能上有所下降,主要优点在监控这一块,事实上国内电商某宝对Druid性能作出了肯定,所以Druid性能也是毋庸置疑的。
3. 集成Druid连接池:
3.1 pom依赖(上一张章代码基础上):
maven依赖地址:https://mvnrepository.com/artifact/com.alibaba/druid
- <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.10</version>
- </dependency>
3.2 连接池配置: (application.properties)
- #################### 数据库基本连接信息 #####################
- spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdb?useSSL=false&useUnicode=true&characterEncoding=utf8
- spring.datasource.username=root
- spring.datasource.password=123456
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- ########################## druid数据源配置 start #############################
- # 使用druid数据源
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- # 初始化的时候会创建一定数量的连接到连接池中
- spring.datasource.initialSize=5
- # 最小连接数 无论这些连接是否被使用都保留着这些数量的连接
- spring.datasource.minIdle=5
- # 连接池中最大的连接数,如果超过最大值,后面的连接将等待加入(使用公平锁排队进入)
- spring.datasource.maxActive=20
- # 配置获取连接等待超时的时间
- spring.datasource.maxWait=60000
- # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
- spring.datasource.timeBetweenEvictionRunsMillis=60000
- # 配置一个连接在池中最小生存的时间,单位是毫秒
- spring.datasource.minEvictableIdleTimeMillis=300000
- # 连接测试 注意 MySQL orale 中有 dual表 sqlserver数据库没有
- spring.datasource.validationQuery=SELECT 1 FROM DUAL
- # 申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
- spring.datasource.testWhileIdle=true
- # 获取连接时执行检测,建议关闭,影响性能
- spring.datasource.testOnBorrow=false
- # 归还连接时执行检测,建议关闭,影响性能
- spring.datasource.testOnReturn=false
- # 是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
- spring.datasource.poolPreparedStatements=true
- # 定每个连接上PSCache的大小 开启poolPreparedStatements后生效
- spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
- # 扩展插件 配置监控统计拦截的filters 常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
- #spring.datasource.filters=stat,wall,log4j
- spring.datasource.filters=stat,log4j
- # 通过connectProperties属性来打开mergeSql(合并sql)功能;慢SQL记录 默认是 3秒
- spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
- # 合并多个DruidDataSource的监控数据
- #spring.datasource.useGlobalDataSourceStat=true
- ########################## druid数据源配置 end #############################
3.3 Druid配置类:
- /**
- * @Auther: xf
- * @Date: 2018/11/26 22:10
- * @Description: druid 配置类
- * http://localhost:8080/druid/login.html
- */
- @Configuration
- public class DruidConfig {
- /**
- * druid本身就是为了扩展jdbc的功能,而dataSource对象就是jdbc的配置
- */
- @Bean
- // 引入application.properties文件中以spring.datasource开头的信息
- @ConfigurationProperties(prefix = "spring.datasource")
- public DataSource druidDataSource() {
- DruidDataSource druidDataSource = new DruidDataSource();
- return druidDataSource;
- }
- /**
- * Druid 监控视图配置
- */
- @Bean
- public ServletRegistrationBean statViewServlet(){
- ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
- // ip 白名单 没有配置则允许所有访问
- servletRegistrationBean.addInitParameter("allow","127.0.0.1");
- // ip 黑名单 优先级大于白名单
- servletRegistrationBean.addInitParameter("deny","192.168.0.19");//设置ip黑名单,优先级高于白名单
- //设置控制台管理用户
- servletRegistrationBean.addInitParameter("loginUsername","admin");
- servletRegistrationBean.addInitParameter("loginPassword","admin");
- //是否可以重置数据
- servletRegistrationBean.addInitParameter("resetEnable","true");
- return servletRegistrationBean;
- }
- /**
- * 监控拦截器
- */
- @Bean
- public FilterRegistrationBean statFilter(){
- //创建过滤器
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
- //设置过滤器过滤路径
- filterRegistrationBean.addUrlPatterns("/*");
- //忽略过滤的形式
- filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
- return filterRegistrationBean;
- }
- }
3.4 Druid监控:(请求接口访问数据库)
访问:http://localhost:8080/druid/index.html 或 login.html:
看到相应的监控信息,可以根据这些指标进行相应的优化。
至此,springboot 配置Druid完成。
【springboot】集成Druid 作为数据库连接池的更多相关文章
- springboot 集成druid
1.druid简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...
- MyBatis初级实战之三:springboot集成druid
OpenWrite版: 欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kuber ...
- SpringBoot Druid整合,SpringBoot 集成Druid
SpringBoot Druid整合,SpringBoot 集成Druid ================================ ©Copyright 蕃薯耀 2018年4月8日 http ...
- SpringBoot整合Druid数据连接池
SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: ...
- 【Java】Springboot集成Druid
Springboot集成Druid方案:一个是在POM中直接配置druid-spring-boot-starter,不用写任何代码:一个是配置druid,写几行代码,可以加入:在方案一基础上加入sta ...
- SpringBoot集成druid数据库连接池的简单使用
简介 Druid是阿里巴巴旗下Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能. 官网: https://github.com/alibaba/druid/wiki/常见问题 ...
- SpringBoot 2.x添加Druid作为数据库连接池
整合了一大堆ORM,是时候增加一个连接池了,此处选用了druid作为连接池,druid是alibaba开源平台上的一个数据库连接池实现,对比c3p0,dbcp加入了对数据库的监控,不知道甩出几条街的距 ...
- 【SpringBoot笔记】SpringBoot整合Druid数据连接池
废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency> <groupId>com.alib ...
- springboot集成druid+mybatis连接oracle数据库
2.1.配置 druid 数据源 2. 随后要进行druid 的数据源的配置,如果要想使用druid 的数据源,那么首先一定要去修改 pom.xml 配置文件,引入以下包: oracle官网下载 oj ...
随机推荐
- 一行代码打印python之禅
就这一句: import this 输出: The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is be ...
- 一个很多人不知道的SpringBoot小技能!!
大家好,我是冰河~~ 最近,发现很多小伙伴在修改了SpringBoot的配置文件后,都要重新编译整个项目,极大的浪费了开发时间.我身边就有很多小伙伴一直是这样做的.那么,有没有什么方式能够修改配置文件 ...
- ajax和springmvc的请求响应原理——深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
1,四大重要部分: 请求链接 post请求和get请求 请求参数形式 响应内容形式 2,从springmvc的controller角度,controller能接收到请求的前提 请求链接必须对应 pos ...
- python -- 结构数据类型(列表、元组、集合、字典)
一.列表 列表表示一组有序的元素,这些元素可以是数字.字符串,也可以是另一个列表. # ----------------------------------------# 列表(list):一组有序的 ...
- sql-5-事务,索引
事务 1.ACID概念 原子性(Atomicity) 要么都成功,要么都失败 一致性(consistency) 事务前后的数据完整性保持一致 持久性(Durability) 事务一旦提交则不可逆,持久 ...
- 【洛谷P2800又上锁妖塔】动态规划
分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005 ...
- POJ1417 True Liars 题解
通过读题,容易发现,当回答为yes时 \(x,y\) 必属于同类,当回答为no时二者必为异类(并且当 \(x=y\) 时,回答必为yes,不过这题不用这个性质). 于是先按关系维护连通块,然后求出每个 ...
- 在java中为啥要重写toString 方法?
在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...
- kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎
作者 田奇,腾讯云高级工程师,专注大规模离在线混部,弹性伸缩,云原生成本优化,熟悉Kubernetes,关注云原生大数据.AI. 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernete ...
- windows上传本地项目Github远程仓库(另附设置git网页链接)
一:关于Windows平台安装git以及github的注册不在详细描述,可以参考如下经验: 安装教程:https://jingyan.baidu.com/article/925f8cb8a8e91cc ...