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; } }
重新启动项目,浏览器打开
输入自己设置的用户名密码后,进入如下页面:
文章来源: springboot之Druid数据源