https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>alibaba-druid-testgroupId>
<artifactId>alibaba-druid-testartifactId>
<version>0.0.1-SNAPSHOTversion>
<parent>
<groupId> org.springframework.boot groupId>
<artifactId> spring-boot-starter-parent artifactId>
<version> 2.0.3.RELEASE version>
parent>
<dependencies>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.1.14version>
dependency>
<dependency>
<groupId> org.springframework.boot groupId>
<artifactId> spring-boot-starter-web artifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.56version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
<optional>trueoptional>
<scope>truescope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId> org.springframework.boot groupId>
<artifactId> spring-boot-maven-plugin artifactId>
plugin>
plugins>
build>
project>
#Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,你可以通过 Spring Boot 配置文件来配置Druid数据库连接池和监控,如果没有配置则使用默认值。
#JDBC 配置
#spring.datasource.druid.url= jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.druid.username= root
#spring.datasource.druid.password= 123456
#spring.datasource.druid.driver-class-name= com.mysql.jdbc.Driver
######################等同以上配置##########################
spring.datasource.url= jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username= root
spring.datasource.password= 123456
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
到这里就配置完了,没错配置完了,就是这么骚,接下来运行项目检查下:
控制台出现以上信息,说明已经整合成功,接下来删除druid依赖重新运行项目,可以看到以下信息:
这时项目已经使用了springboot默认的数据库连接池,为什么添加依赖就能改变数据库连接池呢,我们来看看源码:
我们进入红框中DataSourceProperties,会发现以下信息:
通过上边的图可以发现druid-spring-boot-starter已经默认配置好了这些属性(spring.dataSource==spring.datasource.druid),你只需添加依赖即可,一切操作和以前一样处理
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.druid.filters= stat,wall
#######监控配置
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=10
spring.datasource.druid.web-stat-filter.principal-session-name=session_name
spring.datasource.druid.web-stat-filter.principal-cookie-name=cookie_name
spring.datasource.druid.web-stat-filter.profile-enable=
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置默认false
spring.datasource.druid.stat-view-servlet.enabled=true
# 配置DruidStatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 禁用HTML页面上的“Reset All”功能
spring.datasource.druid.stat-view-servlet.reset-enable=false
spring.datasource.druid.stat-view-servlet.login-username=admin #监控页面登录的用户名
spring.datasource.druid.stat-view-servlet.login-password=123456 #监控页面登录的密码
#IP白名单(没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.0.119
#IP黑名单 (存在共同时,deny优先于allow)
spring.datasource.druid.stat-view-servlet.deny=
#Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns= com.lcf.service.*
http://localhost:8080/druid/
账号:admin 密码123456(properties文件中你自己设置的)
成功页面:
案例:
执行的sql
service层的方法
测试用的控制器
#Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,你可以通过 Spring Boot 配置文件来配置Druid数据库连接池和监控,如果没有配置则使用默认值。
#JDBC 配置
#spring.datasource.druid.url= jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.druid.username= root
#spring.datasource.druid.password= 123456
#spring.datasource.druid.driver-class-name= com.mysql.jdbc.Driver
######################等同以上配置##########################
spring.datasource.url= jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username= root
spring.datasource.password= 123456
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#连接池配置(可选)
# 连接池的配置信息初始化大小,最小,最大
spring.datasource.druid.name=testDruidDataSource
#spring.datasource.druid.initial-size=5
#spring.datasource.druid.max-active=20
#spring.datasource.druid.min-idle=5
# 配置获取连接等待超时的时间
#spring.datasource.druid.max-wait= 60000
#spring.datasource.druid.pool-prepared-statements=
#spring.datasource.druid.max-pool-prepared-statement-per-connection-size=
##spring.datasource.druid.max-open-prepared-statements= #和上面的等价
#spring.datasource.druid.validation-query=
#spring.datasource.druid.validation-query-timeout=
#spring.datasource.druid.test-on-borrow=
#spring.datasource.druid.test-on-return=
#spring.datasource.druid.test-while-idle=
#spring.datasource.druid.time-between-eviction-runs-millis=
#spring.datasource.druid.min-evictable-idle-time-millis=
#spring.datasource.druid.max-evictable-idle-time-millis=
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.druid.filters= stat,wall
#######监控配置
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=10
spring.datasource.druid.web-stat-filter.principal-session-name=session_name
spring.datasource.druid.web-stat-filter.principal-cookie-name=cookie_name
spring.datasource.druid.web-stat-filter.profile-enable=
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置默认false
spring.datasource.druid.stat-view-servlet.enabled=true
# 配置DruidStatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 禁用HTML页面上的“Reset All”功能
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
#IP白名单(没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.0.119
#IP黑名单 (存在共同时,deny优先于allow)
spring.datasource.druid.stat-view-servlet.deny=
#Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns= com.lcf.service.*
#日志级别
#logging.level.root=debug
#热部署生效
spring.devtools.restart.enabled=true
#------------------------------mybatis------------------------------
mybatis.type-aliases-package=com.lcf.entity
mybatis.mapper-locations=classpath:mapper/**.xml
#server.port=8888
#server.servlet.context-path=/lichenfei
当然如果你不喜欢阿里的监控页面,你也可以自己自定义,一下是部分监控api,更多api请看DruidStatService源码
package me.ffs.www.app.controller;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.druid.stat.DruidStatManagerFacade;
import com.alibaba.druid.support.http.stat.WebAppStatManager;
import com.alibaba.druid.support.spring.stat.SpringStatManager;
import com.github.gserv.serv.commons.util.JsonMapper;
/**
* @author : lichenfei
* @date : 2020年1月9日
* @time : 下午4:46:54
*
*/
@RestController
@RequestMapping("b/druid")
public class DruidStatController {
private static final Logger logger = LoggerFactory.getLogger(DruidStatController.class);
@GetMapping("stat/{who}")
public String druidStat(@PathVariable("who") String who) {
// DruidStatManagerFacade#getDataSourceStatDataList 该方法可以获取所有数据源的监控数据,除此之外
// DruidStatManagerFacade 还提供了一些其他方法,你可以按需选择使用。
String result = "";
try {
logger.info(">>>开始查询druid监控数据....");
DruidStatManagerFacade instance = DruidStatManagerFacade.getInstance();
if (StringUtils.isBlank(who)) {
result = "";
} else {
switch (who) {
case "sql.json":// SQL监控
result = JsonMapper.toJsonString(instance.getSqlStatDataList(null));
break;
case "weburi.json":// webUrl监控
result = JsonMapper.toJsonString(WebAppStatManager.getInstance().getURIStatData());
break;
case "datasource.json":// 数据源监控
result = JsonMapper.toJsonString(instance.getDataSourceStatDataList());
break;
case "spring.json":// spring-method监控
result = JsonMapper.toJsonString(SpringStatManager.getInstance().getMethodStatData());
break;
default:
result = "";
break;
}
}
} catch (Exception e) {
logger.info(">>>查询监控数据出现异常, e : {}", e);
result = "";
}
return result;
}
}
开启以下配置即可:
#SQL监控 by alibaba--------------------------------------------
spring.datasource.druid.filters= stat,wall
#监控service层方法
spring.datasource.druid.aop-patterns= com.lcf.service.*
#启用WebStatFilter,默认为false
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
更多请参考官方文档
到这里整合就完了,有什么不对请多多指导…