引入的jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
添加sql收集配置
spring.datasource.druid.filters=stat,wall,log4j
添加类
import org.springframework.beans.factory.annotation.Value;
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 com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean DruidStatViewServlet() {
System.out.println("servletRegistrationBean configure start.");
// org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
// 添加初始化参数
servletRegistrationBean.addInitParameter("allow","127.0.0.1");//允许访问ip
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "password");
// 是否可以重置
servletRegistrationBean.addInitParameter("resetEnable", "fase");
return servletRegistrationBean;
}
/**
* 注册一个:filterRegistrationBean
*
* @return
*/
@Bean
public FilterRegistrationBean druidStatFilter() {
System.out.println("filterRegistrationBean configure start.");
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
// 添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
// 添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
druid 默认情况下开启监控是不支持执行多sql
如:udpate …;update…; 一句sql 执行2调update
需要在DruidConfig 加入:
@Value("${spring.datasource.druid.filters:1}")
private String filters;
/**
* 手动注入druid 监控器
* @author jiangwei
* @Version 1.0
* @CreatDate 2018年8月24日 上午11:33:05
* @return
*/
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DruidDataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
List<Filter> filterList = new ArrayList<>();
if(filters !=null && !"".equals(filters)){
//stat,wall,log4j
if(filters.indexOf("stat") != -1){
filterList.add(new StatFilter());
}
if(filters.indexOf("wall") != -1){
filterList.add(wallFilter());
}
if(filters.indexOf("log4j") != -1){
filterList.add(new Log4jFilter());
}
}
druidDataSource.setProxyFilters(filterList);
return druidDataSource;
}
@Bean
public WallConfig wallConfig() {
WallConfig config = new WallConfig();
config.setMultiStatementAllow(true);// 允许一次执行多条语句
config.setNoneBaseStatementAllow(true);// 允许非基本语句的其他语句
return config;
}
@Bean
public WallFilter wallFilter() {
WallFilter wallFilter = new WallFilter();
wallFilter.setConfig(wallConfig());
return wallFilter;
}