转自: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 作为数据库连接池的更多相关文章

  1. springboot 集成druid

    1.druid简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  2. MyBatis初级实战之三:springboot集成druid

    OpenWrite版: 欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kuber ...

  3. SpringBoot Druid整合,SpringBoot 集成Druid

    SpringBoot Druid整合,SpringBoot 集成Druid ================================ ©Copyright 蕃薯耀 2018年4月8日 http ...

  4. SpringBoot整合Druid数据连接池

    SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: ...

  5. 【Java】Springboot集成Druid

    Springboot集成Druid方案:一个是在POM中直接配置druid-spring-boot-starter,不用写任何代码:一个是配置druid,写几行代码,可以加入:在方案一基础上加入sta ...

  6. SpringBoot集成druid数据库连接池的简单使用

    简介 Druid是阿里巴巴旗下Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能. 官网: https://github.com/alibaba/druid/wiki/常见问题 ...

  7. SpringBoot 2.x添加Druid作为数据库连接池

    整合了一大堆ORM,是时候增加一个连接池了,此处选用了druid作为连接池,druid是alibaba开源平台上的一个数据库连接池实现,对比c3p0,dbcp加入了对数据库的监控,不知道甩出几条街的距 ...

  8. 【SpringBoot笔记】SpringBoot整合Druid数据连接池

    废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency> <groupId>com.alib ...

  9. springboot集成druid+mybatis连接oracle数据库

    2.1.配置 druid 数据源 2. 随后要进行druid 的数据源的配置,如果要想使用druid 的数据源,那么首先一定要去修改 pom.xml 配置文件,引入以下包: oracle官网下载 oj ...

随机推荐

  1. python 常用命令sys.exit()

    Python的程序有两中退出方式:os._exit(), sys.exit() os._exit()会直接将python程序终止,之后的所有代码都不会继续执行. sys.exit()会引发一个异常:S ...

  2. 基于IDEA的JAVA开发[第一集]:在Linux上安装IDEA

    1,因为买了荣耀的magicbook pro 锐龙版,系统是Linux,以后打算直接在Linux上开发.本来熟悉Myeclipse,下载了Myeclipse2017 for Linux,但是安装中出现 ...

  3. win 10,Maven 配置

    来源:https://www.cnblogs.com/lihan829/p/11503497.html 所需工具 : JDK 1.8 Maven 3.6.2 Windows 10 注Maven 3.2 ...

  4. python批量修改图片名称

    import os class BatchRename(): def rename(self): # windows环境 """ os.rename() 方法用于命名文件 ...

  5. 第十篇 -- 学习C++宝典2005版

    最近看了C++宝典,看时间是2005的,对于里面的程序自己也进行了编写,由于时间过久,可能有些函数的用法发生了改变,自己也对其进行了修改,用VS2017可以编译通过. 前四章学习内容 CPlusPlu ...

  6. css--实现一个文字少时居中,文字换行时居左的样式

    前言 最近群里的小伙伴去面试,遇到这样一个问题,面试官问:"用 css 对一行文字进行布局,当文字不够换行的时候,这行文字要居中显示,当文字出现换行的时候,这行文字要靠左显示.", ...

  7. Sunset靶机

    仅供个人娱乐 靶机信息 https://www.vulnhub.com/entry/sunset-sunrise,406/ 一.主机探测 二.信息收集 nmap -sS -sV -T5 -A -p- ...

  8. 数据库比对工具SQL(表、字段、触发器、索引、视图、存储过程)

    做一个数据库比对小工具,把SQL做一个笔记 SELECT object_id AS ID --表ID,'表' sType,Name --表名FROM sys.tablesORDER BY Name-- ...

  9. 利用支付宝Cookie监听交易订单实现个人支付宝收款实时回调通知

    在网上.社区里搜了一下好像没找到什么文章详细分享这种方式的,这些天我花了些时间研究整理了一下,发现这种方式能实时获取到支付宝里的二维码收款记录,从而很好地实现个人支付宝免签约收款实时回调,于是在这里分 ...

  10. Java Fork/Join

    Fork/Join框架 Fork/Join 以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果. 这个过程其实就是分治算法的并行版本,图解如下: 如何使用 我们要使 ...