SpringBoot采用Druid数据源连接
发布日期: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/*");        Map
map = 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
上一篇:Springboot整合MyBatis以及MyBatis-plus
下一篇:SpringBoot借助docker容器的数据库实现jdbc连接

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月21日 15时05分05秒