springboot之Druid数据源

匿名 (未验证) 提交于 2019-12-03 00:18:01

Druid是阿里巴巴的一个开源项目,一个关系型数据库连接池,Druid在监控、可扩展性、稳定性和性能方面具有明显的优势。通过Druid提供的监控功能,可以实时观察数据库连接池和SQL查询的工作情况。使用Druid连接池在一定程度上可以提高数据访问效率(关于Druid、dbcp还有c3p0的比较可以查看http://www.cnblogs.com/JavaSubin/p/5294721.html,个人感觉很详细)。

springboot整合Druid访问MySQL数据库,首先要导入maven依赖。

<!-- 可通过这个地址查找:https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> 	<groupId>com.alibaba</groupId> 	<artifactId>druid</artifactId> 	<version>1.1.9</version> </dependency>

然后在application.yml(和application.properties是一样的,但是看起来更舒服,更条理化)中添加配置

spring:   #配置jdbc   datasource:     url: jdbc:mysql://localhost:3306/xiaodou?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=true     username: root     password: 123456     driver-class-name: com.mysql.jdbc.Driver      #druid连接池     type: com.alibaba.druid.pool.DruidDataSource     #最大活跃数     maxActive: 20     #初始化数量     initialSize: 1     #最大连接等待超时时间     maxWait: 60000     #打开PSCache,并且指定每个连接PSCache的大小     poolPreparedStatements: true     maxPoolPreparedStatementPerConnectionSize: 20     #通过connectionProperties属性来打开mergeSql功能;慢SQL记录     #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000     minIdle: 1     timeBetweenEvictionRunsMillis: 60000     minEvictableIdleTimeMillis: 30000     validationQuery: select 1 from dual     testWhileIdle: true     testOnBorrow: false     testOnReturn: false

运行项目,查看日志可以看到Druid作为连接池已经启用了,如下图所示:


接下来可以开启Druid的监控功能,新建DruidConfig.java,代码如下:

import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  @Configuration public class DruidConfig {      @Bean     public ServletRegistrationBean statViewServlet(){         //创建servlet注册实体         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");         //设置ip白名单         //servletRegistrationBean.addInitParameter("allow","127.0.0.1");         //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow         //servletRegistrationBean.addInitParameter("deny","192.168.0.250");         //设置控制台管理用户         servletRegistrationBean.addInitParameter("loginUsername","druid");         servletRegistrationBean.addInitParameter("loginPassword","123456");         //是否可以重置数据         servletRegistrationBean.addInitParameter("resetEnable","false");         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;     } }

重新启动项目,浏览器打开


输入自己设置的用户名密码后,进入如下页面:


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!