转自: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

  1. <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid</artifactId>
  5. <version>1.1.10</version>
  6. </dependency>
3.2 连接池配置: (application.properties)
  1. #################### 数据库基本连接信息 #####################
  2. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdb?useSSL=false&useUnicode=true&characterEncoding=utf8
  3. spring.datasource.username=root
  4. spring.datasource.password=123456
  5. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  6.  
  7. ########################## druid数据源配置 start #############################
  8. # 使用druid数据源
  9. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  10. # 初始化的时候会创建一定数量的连接到连接池中
  11. spring.datasource.initialSize=5
  12. # 最小连接数 无论这些连接是否被使用都保留着这些数量的连接
  13. spring.datasource.minIdle=5
  14. # 连接池中最大的连接数,如果超过最大值,后面的连接将等待加入(使用公平锁排队进入)
  15. spring.datasource.maxActive=20
  16. # 配置获取连接等待超时的时间
  17. spring.datasource.maxWait=60000
  18. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  19. spring.datasource.timeBetweenEvictionRunsMillis=60000
  20. # 配置一个连接在池中最小生存的时间,单位是毫秒
  21. spring.datasource.minEvictableIdleTimeMillis=300000
  22. # 连接测试 注意 MySQL orale 中有 dual表 sqlserver数据库没有
  23. spring.datasource.validationQuery=SELECT 1 FROM DUAL
  24. # 申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
  25. spring.datasource.testWhileIdle=true
  26. # 获取连接时执行检测,建议关闭,影响性能
  27. spring.datasource.testOnBorrow=false
  28. # 归还连接时执行检测,建议关闭,影响性能
  29. spring.datasource.testOnReturn=false
  30. # 是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
  31. spring.datasource.poolPreparedStatements=true
  32. # 定每个连接上PSCache的大小 开启poolPreparedStatements后生效
  33. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
  34. # 扩展插件 配置监控统计拦截的filters 常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
  35. #spring.datasource.filters=stat,wall,log4j
  36. spring.datasource.filters=stat,log4j
  37. # 通过connectProperties属性来打开mergeSql(合并sql)功能;慢SQL记录 默认是 3秒
  38. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  39. # 合并多个DruidDataSource的监控数据
  40. #spring.datasource.useGlobalDataSourceStat=true
  41. ########################## druid数据源配置 end #############################
3.3 Druid配置类:
  1. /**
  2. * @Auther: xf
  3. * @Date: 2018/11/26 22:10
  4. * @Description: druid 配置类
  5. * http://localhost:8080/druid/login.html
  6. */
  7. @Configuration
  8. public class DruidConfig {
  9. /**
  10. * druid本身就是为了扩展jdbc的功能,而dataSource对象就是jdbc的配置
  11. */
  12. @Bean
  13. // 引入application.properties文件中以spring.datasource开头的信息
  14. @ConfigurationProperties(prefix = "spring.datasource")
  15. public DataSource druidDataSource() {
  16. DruidDataSource druidDataSource = new DruidDataSource();
  17. return druidDataSource;
  18. }
  19. /**
  20. * Druid 监控视图配置
  21. */
  22. @Bean
  23. public ServletRegistrationBean statViewServlet(){
  24. ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
  25. // ip 白名单 没有配置则允许所有访问
  26. servletRegistrationBean.addInitParameter("allow","127.0.0.1");
  27. // ip 黑名单 优先级大于白名单
  28. servletRegistrationBean.addInitParameter("deny","192.168.0.19");//设置ip黑名单,优先级高于白名单
  29. //设置控制台管理用户
  30. servletRegistrationBean.addInitParameter("loginUsername","admin");
  31. servletRegistrationBean.addInitParameter("loginPassword","admin");
  32. //是否可以重置数据
  33. servletRegistrationBean.addInitParameter("resetEnable","true");
  34. return servletRegistrationBean;
  35. }
  36. /**
  37. * 监控拦截器
  38. */
  39. @Bean
  40. public FilterRegistrationBean statFilter(){
  41. //创建过滤器
  42. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
  43. //设置过滤器过滤路径
  44. filterRegistrationBean.addUrlPatterns("/*");
  45. //忽略过滤的形式
  46. filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
  47. return filterRegistrationBean;
  48. }
  49. }
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之禅

    就这一句: import this 输出: The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is be ...

  2. 一个很多人不知道的SpringBoot小技能!!

    大家好,我是冰河~~ 最近,发现很多小伙伴在修改了SpringBoot的配置文件后,都要重新编译整个项目,极大的浪费了开发时间.我身边就有很多小伙伴一直是这样做的.那么,有没有什么方式能够修改配置文件 ...

  3. ajax和springmvc的请求响应原理——深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    1,四大重要部分: 请求链接 post请求和get请求 请求参数形式 响应内容形式 2,从springmvc的controller角度,controller能接收到请求的前提 请求链接必须对应 pos ...

  4. python -- 结构数据类型(列表、元组、集合、字典)

    一.列表 列表表示一组有序的元素,这些元素可以是数字.字符串,也可以是另一个列表. # ----------------------------------------# 列表(list):一组有序的 ...

  5. sql-5-事务,索引

    事务 1.ACID概念 原子性(Atomicity) 要么都成功,要么都失败 一致性(consistency) 事务前后的数据完整性保持一致 持久性(Durability) 事务一旦提交则不可逆,持久 ...

  6. 【洛谷P2800又上锁妖塔】动态规划

    分析 考虑上一层还是上两层还是爬上去 AC代码 #include <bits/stdc++.h> using namespace std; int f[1000005],a[1000005 ...

  7. POJ1417 True Liars 题解

    通过读题,容易发现,当回答为yes时 \(x,y\) 必属于同类,当回答为no时二者必为异类(并且当 \(x=y\) 时,回答必为yes,不过这题不用这个性质). 于是先按关系维护连通块,然后求出每个 ...

  8. 在java中为啥要重写toString 方法?

    在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...

  9. kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎

    作者 田奇,腾讯云高级工程师,专注大规模离在线混部,弹性伸缩,云原生成本优化,熟悉Kubernetes,关注云原生大数据.AI. 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernete ...

  10. windows上传本地项目Github远程仓库(另附设置git网页链接)

    一:关于Windows平台安装git以及github的注册不在详细描述,可以参考如下经验: 安装教程:https://jingyan.baidu.com/article/925f8cb8a8e91cc ...