由阿里巴巴开源的druid链接池是目前综合实力最突出的数据库链接池,并且还提供了监控日志功能,可以分析SQL执行状况。css
pom.xml中加入java
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
application.properties中加入mysql
# druid spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 链接池初始化大小,最小,最大 spring.datasource.initialSize=10 spring.datasource.minIdle=10 spring.datasource.maxActive=30 # 链接等待超时时间 spring.datasource.maxWait=60000 # 多久检测须要关闭的空闲链接 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 一个链接在池中最小生存的时间 spring.datasource.minEvictableIdleTimeMillis=300000 # 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,若是不配validationQuery项,则下面三项配置无用 spring.datasource.validationQuery=SELECT 'x' spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,而且指定每一个链接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql没法统计,wall用于防火墙 spring.datasource.filters=stat,wall,log4j # 经过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 spring.datasource.useGlobalDataSourceStat=true
注:以前已经配置好了mysql,mybatis,这里没有重复写了git
新增了一个DruidFilter.java来配置内置的监控github
DruidFilter.javaweb
package com.example.config; 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 DruidFilter { @Bean public ServletRegistrationBean druidStatView() { //指定路径进入内置监控页面 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); //IP白名单: servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); //IP黑名单 servletRegistrationBean.addInitParameter("deny", "192.168.1.73"); //登陆查看信息的帐号密码. //servletRegistrationBean.addInitParameter("loginUsername", "admin"); //servletRegistrationBean.addInitParameter("loginPassword", "123456"); //是否可以重置数据. servletRegistrationBean.addInitParameter("resetEnable", "true"); return servletRegistrationBean; } @Bean public FilterRegistrationBean druidWebStatFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //添加过滤规则. filterRegistrationBean.addUrlPatterns("/*"); //添加不须要忽略的格式信息. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
注:我以前就已经配置好了spring security,若是在和其余教程同样配置druid的帐号密码,会致使输入druid的帐号密码后没法跳转进入内置监控页面,我知道有不少方法能够避免,但那都须要额外增长代码来判断绕过,既然spring security已经有了帐号权限,何须额外非得给druid单独增长一套帐号权限,把 /druid/*
路径配置在spring security中,公用已有的帐号权限不更好嘛。因此我没有单独配置。spring
还有这只是经常使用的配置,如若须要进一步了解详细的配置sql
效果图以下mybatis
恩恩,还自带阿里云的广告,果真是阿里的开源产品