一、导入依赖
com.alibaba
druid
1.1.21
二、application.yml中启用Druid
三、配置Druid
方法一(编写DruidConfig类来配置)
package com.fdw.springbootstudy.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
import javax.servlet.ServletRegistration;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
//绑定application里的配置
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//手动注入Servlet
//后台监控
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
//后台需要有人登录,账号密码配置
HashMap initParameters = new HashMap<>();
//增加配置(两个参数名是固定的)
initParameters.put("loginUsername","admin");
initParameters.put("loginPassword","123456");
//允许谁能访问
initParameters.put("allow","");
//禁止谁能访问
//initParameters.put("fdw","192.168.11.123");
bean.setInitParameters(initParameters);
return bean;
}
//手动注入Filter
//阿里巴巴过滤器
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//可以过滤哪些请求
Map initmap = new HashMap<>();
initmap.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initmap);
return bean;
}
}
在application.yml中如下配置
方法二(导入druid-spring-boot-starter依赖)
com.alibaba
druid-spring-boot-starter
1.1.10
log4j
log4j
1.2.17
然后只需在application.yml中配置,不需要写config类
server:
port: 8081
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
#配置Druid数据源
type: com.alibaba.druid.pool.DruidDataSource
#Druid数据源专有配置,必须导入druid-spring-boot-starter才能生效,也可以通过DruidConfig注入生效
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 30000
validation-query: SELECt 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
#配置监控统计拦截的filters,stat:监控统计,log4j,日志记录,wall,防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException,则导入log4j依赖即可
filters: stat,wall,log4j
max-pool-prepared-statement-per-connection-size: 20
use-global-data-source-stat: true
connect-properties: druid.stat.mergesql=true;druid.stat.slowSqlMills=500
#配置监控页面servlet的用户名和密码
stat-view-servlet:
login-username: admin
login-password: 123456
#配置监控页面filter过滤器
web-stat-filter:
exclusions: "*.js,*.css,/druid/*"
四、查看监控页面