SpringBoot Druid Sql无法监控的问题解决
配置类:
@Configuration
public class DruidDataSourceConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
//这一部很重要
dataSource.addFilters("stat");
dataSource.addFilters("wall");
dataSource.addFilters("log4j");
return dataSource;
}
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
//initParams.put("allow", "localhost"):表示只有本机可以访问
initParams.put("deny","");
bean.setInitParameters(initParams);
return bean;
}
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
//"/*" 表示过滤所有请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
yml文件:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
//填写自己的账号和密码
username: ****
password: ****
url: jdbc:mysql://localhost:3306/qiubai?characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
maxWait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 1 from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
filters: stat,wall,log4j
max-pool-prepared-statement-per-connection-size: 20
use-global-data-source-stat: true
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
filter:
stat:
enabled: true
wall:
config:
multi-statement-allow: true