Spring Boot教程:druid数据库连接池配置

史上最简单Spring Boot教程:第五篇SpringBoot之druid数据库连接池配置

本文出自DistressRroke _chen的博客

一、什么是Druid

  Druid是Java语言中最好的数据库连接池,它能够提供强大的监控和扩展功能。

  Druid是一个JDBC组件,它包括三部分: 

 1)DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 

 2)DruidDataSource 高效可管理的数据库连接池。 

 3)SQLParser

二、 为什么要使用数据库连接池

       使用数据库连接池主要考虑到程序与数据库建立连接的性能。创建一个新的数据库是一个很耗时的过程,在使用完之后,可能还需要不断的释放建立的连接,对资源的损耗大。

而采用数据库连接池之后,首先就创建了固定数量的数据库连接,需要用的时候使用即可。当然,这样做的一个缺点是,可能某些时候完全没有数据库请求,但是也保持了数据库的最小连接数。浪费了资源。不过这种浪费资源相对于完全不采用数据库连接池还是很有优势的。


三、Druid有哪些优势

1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 

2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。 

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。 

项目地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

Druid的详细源码可以从 https://github.com/alibaba/druid进行下载。

 

四、使用Druid及其应用

1、新建项目

 注:这里说明一点,创建项目勾选的mysql驱动版本可能过高,当年启动项目时会出现以下错误

    必须配置8以上的jdbc驱动,说明jdbc驱动过高

我们这里统一使用5.1.44版本

 

2、导入pom依赖

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
  </dependency>

3、配置application.yml,添加数据库连接池信息

 ①application.yml和application.properties区别?
  yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的。

注意修改数据库名(mybatis_ssm),登录账号(username)以及登录密码(password)


  
  
  1. server:
  2. servlet:
  3. context-path: /springboot

 
 
  1. spring:
  2. datasource:
  3. # 1. JDBC
  4. type: com.alibaba.druid.pool. DruidDataSource
  5. driver- class-name: com.mysql.jdbc.Driver
  6. url: jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=utf8
  7. username: root
  8. password: 123456
  9. druid:
  10. #2.连接池配置
  11. #初始化连接池的连接数量 大小,最小,最大
  12. initial-size: 5
  13. min-idle: 5
  14. max-active: 20
  15. #配置获取连接等待超时的时间.
  16. max-wait: 60000
  17. #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  18. time-between-eviction-runs-millis: 60000
  19. # 配置一个连接在池中最小生存的时间,单位是毫秒
  20. min-evictable-idle-time-millis: 30000
  21. validation-query: SELECT 1 FROM DUAL
  22. test-while-idle: true
  23. test-on-borrow: true
  24. test-on-return: false
  25. # 是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开
  26. pool-prepared-statements: true
  27. max-pool-prepared-statement-per-connection-size: 20
  28. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  29. filter:
  30. stat:
  31. merge-sql: true
  32. slow-sql-millis: 5000
  33. #3.基础监控配置
  34. web-stat-filter:
  35. enabled: true
  36. url-pattern: /*
  37. #设置不统计哪些URL
  38. exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
  39. session-stat-enable: true
  40. session-stat-max-count: 100
  41. stat-view-servlet:
  42. enabled: true
  43. url-pattern: /druid/*
  44. reset-enable: true
  45. #设置监控页面的登录名和密码
  46. login-username: admin
  47. login-password: admin
  48. allow: 127.0.0.1
  49. #deny: 192.168.1.100

五、启动SpringBoot项目访问druid监控页面

 http://localhost:tomcat端口号/项目名称/druid/

 项目访问:http://localhost:8080/springboot/druid/login.html

登录账号密码就是application.yml配置文件设置监控页面的登录名(admin)和密码(admin)

登录成功后加入Druid首页面

 数据源里面的数据就是我们刚刚在application.yml中所配置的数据

六、总结

        在实际项目中,数据库连接池的使用是必不可少的。没有采用数据库连接池时,系统是按照数据库默认的方式保持一定的连接数,将一定的连接数保持在休眠状态。采用druid数据库连接池后,正常保持多少连接数,最大保持多少连接数都是可配置的。也有一台完整的平台监控整个数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值