
SpringBoot采用Druid数据源连接
特别说明!其实对于方法一来说,不引入druid-spring-boot-starter这个启动器依赖,而是引入下面的依赖也照样可以成立:
发布日期:2021-05-07 13:38:51
浏览次数:20
分类:精选文章
本文共 4133 字,大约阅读时间需要 13 分钟。
这篇可以说是的后续
Druid数据源是阿里巴巴研发的,有些人喜欢叫做德鲁伊数据源,阿里毕竟用该数据源应付了多年双十一的冲击,该数据源还是经受了很大的考验,所以了解他很有必要! 首先pom.xml中添加依赖:注意别用太高的版本!com.alibaba druid-spring-boot-starter 1.1.10
然后在配置文件中,声明开启该数据源!就是下面的
type : com.alibaba.druid.pool.DruidDataSource这条语句,其实我发现这步可以跳过,为什么呢,我试过了,只要增加了druid依赖,Springboot就会默认使用它,不配置下面的type属性也行spring: datasource: username: root password: 123 url: jdbc:mysql://192.168.31.52:3306/jdbc driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource server: port: 8888
至此,springboot的数据源就启用的是druid:

如果想设置数据源的参数,以及开启Druid监听功能,则需要采用下面的方法!
方法一:参考了b站尚硅谷视频的方法
1.在配置文件yml中声明一些属性
spring: datasource: username: root password: 123 url: jdbc:mysql://192.168.31.52:3306/jdbc driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall,slf4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 initialization-mode: always
2.很显然的是!!initialSize这些属性并不在spring.datasource下,所以想要这些属性生效就得将下面的bean注入到ioc容器中:
//让数据源其他配置生效 @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druid(){ return new DruidDataSource(); }
3.如果想实现监听功能,则将下面两个bean也注入进去:
//1.配置一个管理后台的Servlet @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); Mapmap = new HashMap<>(); map.put("loginUsername","admin"); map.put("loginPassword","123456"); map.put("allow","");//默认就是运行所有访问 map.put("deny","192.168.31.53"); bean.setInitParameters(map); return bean; } //2.配置一个监控的filter @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean filterFilterRegistrationBean = new FilterRegistrationBean(); filterFilterRegistrationBean.setFilter(new WebStatFilter()); Map initParams = new HashMap<>(); initParams.put("exclusions","*.js,*.css,/druid/*"); filterFilterRegistrationBean.setInitParameters(initParams); filterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*")); return filterFilterRegistrationBean; }
方法二、上面的配置比较繁琐是吧,那就看看怎么简化:
全部配置直接写在yml中!!这次用主机localhost为例子
spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/mp?serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialization-mode: always druid: # 连接池配置 # 配置初始化大小、最小、最大 initial-size: 1 min-idle: 1 max-active: 20 # 配置获取连接等待超时的时间 max-wait: 3000 validation-query: SELECT 1 FROM DUAL test-on-borrow: false test-on-return: false test-while-idle: true pool-prepared-statements: true time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 filters: stat,wall,slf4j # 配置web监控,默认配置也和下面相同(除用户名密码,enabled默认false外),其他可以不配 web-stat-filter: enabled: true url-pattern: /* exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: root allow: 127.0.0.1
OK!配置说完了,现在解释一下上面druid监听的作用:
运行springboot的主类
访问/druid/login.html 该页面是druid数据源自带的,输入上面自己设置好的用户名和密码,即可观察程序的很多细节参数,极大程度的方便了程序员进行性能调优和压力测试!
特别说明!其实对于方法一来说,不引入druid-spring-boot-starter这个启动器依赖,而是引入下面的依赖也照样可以成立:
com.alibaba druid 1.1.17
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月21日 15时05分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
查询某表格上次进行vacuum的时间
2021-05-08
invalid byte sequence for encoding
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
技术美术面试问题整理
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
js求阶乘
2021-05-08
简单的xml读取存储方法(未优化)
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
ButterKnife使用问题
2021-05-08
为什么讨厌所谓仿生AI的说法
2021-05-08
ORACLE 客户端工具
2021-05-08
使用第三方sdk,微信wechat扫码登录
2021-05-08
基于LabVIEW的入门指南
2021-05-08