转自: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. Sharding+SpringBoot+Mybatis 读写分离

    基于Sharding JDBC的读写分离 1.引入pom.xml <dependencies> <!-- mybatis --> <dependency> < ...

  2. C语言:整数取值范转及溢出

    short.int.long 是C语言中常用的三种整数类型,分别称为短整型.整型.长整型.在现代操作系统中,short.int.long 的长度分别是 2.4.4 或者 8,它们只能存储有限的数值,当 ...

  3. Java基础00-字符串14

    1. API 1.1 API概述 2. String String常用类的常用方法 String字符串变量的创建: 声明:    String 变量名; String str; 声明并初始化: Str ...

  4. ACM金牌选手讲解LeetCode算法《栈和队列的高级应用》

    大家好,我是编程熊,双非逆袭选手,字节跳动.旷视科技前员工,ACM金牌,保研985,<ACM金牌选手讲解LeetCode算法系列>作者. 上一篇文章讲解了<线性表>中的数组.链 ...

  5. TypeScript——原始数据类型

    TypeScript原始数据类型 原始数据类型包括:布尔值.数值.字符串.null.undefined. Symbol.BigInt. 布尔值: let isDone: boolean = false ...

  6. Apache HBase 1.7.1 发布,分布式数据库

    Apache HBase 是一个开源的.分布式的.版本化的.非关系的数据库.Apache HBase 提供对数十亿个数据的低延迟随机访问在非专用硬件上有数百万列的行. 关于 HBase更多内容,请参阅 ...

  7. 前端基础css(三)

    HTML:用于显示页面的内容 CSS:用于以什么样的形式(样式)去显示 一. 选择器 [1] 标签/元素选择器 (整个页面的所有的相同的标签都显示统一的样式) h1{ font-size: 20px; ...

  8. 关于Vmware-Tools的安装问题:Please re-run this program as the super user. Execution aborted.

    点击VM-Install VMware Tools在桌面上出现一张光盘包含3个文件,分别为manifest.txt:Vmware-tools-版本号.rpm和Vmware-tools-版本号.tar. ...

  9. SSM和Maven整合

    项目架构如图 applicationContext.xml还有其他文件一起放进resources下 jsp,js,等文件放在webapp下

  10. Clip Studio Paint EX 1.10.6安装破解教程

    clip studio paint是一款牛逼的绘图软件,简称csp.做动漫.漫画设计的同学的必备神器.本文教大家如何安装并破解 clip studio paint ex 1.10.6版本,文章教程提供 ...