一.编写Druid配置文件
在resources文件夹下面建立application.yml文件,输入下面的代码完成配置。
/*配置基础的DataSource
*/
spring:
datasource:
// Datasource类型选择Druid
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.25.125:3306/springboot?characterEncoding=utf8
username: root
password: root
/*Druid扩展属性配置
*/
// 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 20
// 配置获取连接等待超时的时间(毫秒)
maxWait: 60000
// 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
// 配置有一个连接在连接池中的最小生存时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
// 打开PSCache,指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
// 配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙
filters: stat, wall, log4j
// 通过connectProperties属性来打开mergeSql功能,慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
二.注册Druid提供的监控器和过滤器
@Configuration
public class DruidConfiguration {
/**
* 注册监控器
*/
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 添加访问权限(deny优先高于allow)
servletRegistrationBean.addInitParameter("allow", "192.168.0.104,127.0.0.1");
servletRegistrationBean.addInitParameter("deny", "192.168.0.105");
// 添加用户账号密码
servletRegistrationBean.addInitParameter("loginUsername", "admin");
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;
}
Web有三大组件:Servlet、Listener、Filter。
要想开启Druid的监控功能我们就要用到它所提供的
StatViewServlet(package com.alibaba.druid.support.http;) 监听组件
WebStatFilter(package com.alibaba.druid.support.http;) 过滤器
-
注册组件的类
ServletRegistrationBean(用于注册webServlet组件)
FilterRegistrationBean(用于注册web过滤器) -
注册Druid提供的组件(添加组件)
ServletRegistrationBean(new StatViewServlet(), "/druid/")把StatViewServlet组件注册进来并添加其 访问路径( /druid/*)
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter())把过滤器WebStatFilter注册进来 -
属性设置
allow,deny,loginUsername这些都是StatViewServlet的属性
exclusions…等都是WebStatFilter的属性
(1)StatViewServlet
(2)WebStatFilter
三.登入页面
输入localhost:8080/druid 即可访问
druid是在前面注册StatViewServlet时所映射的
ServletRegistrationBean(neStatViewServlet(),"/druid/*");
用户名和密码就是在对StatViewServlet设置属性是所添加的
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");