springboot+druid(使用druid-spring-boot-starter配置)

参考:

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

1.基础配置:

添加依赖:

<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>

application.properties:

#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依赖重新运行项目,可以看到以下信息:
hikari
这时项目已经使用了springboot默认的数据库连接池,为什么添加依赖就能改变数据库连接池呢,我们来看看源码:
springboot+druid(使用druid-spring-boot-starter配置)_第1张图片
springboot+druid(使用druid-spring-boot-starter配置)_第2张图片
我们进入红框中DataSourceProperties,会发现以下信息:
springboot+druid(使用druid-spring-boot-starter配置)_第3张图片
通过上边的图可以发现druid-spring-boot-starter已经默认配置好了这些属性(spring.dataSource==spring.datasource.druid),你只需添加依赖即可,一切操作和以前一样处理

2.监控配置:

#配置监控统计拦截的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文件中你自己设置的)
springboot+druid(使用druid-spring-boot-starter配置)_第4张图片
成功页面:
springboot+druid(使用druid-spring-boot-starter配置)_第5张图片
案例:
执行的sql
springboot+druid(使用druid-spring-boot-starter配置)_第6张图片
service层的方法
springboot+druid(使用druid-spring-boot-starter配置)_第7张图片
测试用的控制器
springboot+druid(使用druid-spring-boot-starter配置)_第8张图片

更多配置:

application.properties:



#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=/*

更多请参考官方文档

到这里整合就完了,有什么不对请多多指导…

你可能感兴趣的:(springboot)