Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。
参考:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
1、引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
避免Druid版本冲突,可以删除原有的Druid依赖(starter中已经依赖)
2、配置JDBC(根据项目的具体参数确定)
# JDBC配置
spring.datasource.druid.url= jdbc:mysql://ip:3306/database?useUnicode=true&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.druid.username=uername
spring.datasource.druid.password=password
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
- druid连接池配置
# 连接池配置,下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-wait=60000
#设置为让连接池知道数据库已经断开了,并且自动测试连接查询
spring.datasource.druid.validation-query=select 'x'
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=3000
开启监控
# 配置StatFilter StatFilter,用于统计监控信息
spring.datasource.druid.filter.stat.log-slow-sql= true
spring.datasource.druid.filter.stat.slow-sql-millis=1000
spring.datasource.druid.filter.stat.merge-sql=true
spring.datasource.druid.filter.stat.db-type=mysql
spring.datasource.druid.filter.stat.enabled=true
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter 连接泄漏监测
#WebStatFilter用于采集web-jdbc关联监控的数据。
#如果你的应用配置了WebStatFilter
#在内置监控页面weburi-detail.html中,
#查看JdbcPoolConnectionOpenCount(连接池获取连接次数)
# 和JdbcPoolConnectionCloseCount(连接池关闭连接次数)属性,
#如果不相等,就是泄漏了。
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
#spring.datasource.druid.stat-view-servlet.allow=
#你可以配置principalSessionName,使得druid能够知道当前的cookie的用户是谁
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
#你可以配置principalSessionName,使得druid能够知道当前的session的用户是谁
spring.datasource.druid.web-stat-filter.principal-session-name=admin
#置profileEnable能够监控单个url调用的sql列表。
spring.datasource.druid.web-stat-filter.profile-enable=true
#session统计功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true
#最大session数
spring.datasource.druid.web-stat-filter.session-stat-max-count=100000
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#使用Druid的内置监控页面
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true
# 配置WallFilter
#配置防御SQL注入攻击
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=mysql
spring.datasource.druid.filter.wall.config.alter-table-allow=false
spring.datasource.druid.filter.wall.config.truncate-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false
#是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL。
spring.datasource.druid.filter.wall.config.none-base-statement-allow=false
#检查UPDATE语句是否无where条件,这是有风险的,但不是SQL注入类型的风险
spring.datasource.druid.filter.wall.config.update-where-none-check=true
#SELECT ... INTO OUTFILE 是否允许,这个是mysql注入攻击的常见手段,缺省是禁止的
spring.datasource.druid.filter.wall.config.select-into-outfile-allow=false
#是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息
spring.datasource.druid.filter.wall.config.metadata-allow=true
#对被认为是攻击的SQL进行LOG.error输出
spring.datasource.druid.filter.wall.log-violation=true
#对被认为是攻击的SQL抛出SQLExcepton
spring.datasource.druid.filter.wall.throw-exception=true
这个配置需要依赖大量固定的参数名,参数名客户以参考Druid官网文档,也可以用像Idea这样的工具的代码提示功能,另外处于项目安全考虑druid 监控的配置为了只允许本机访问,相关配置:
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
以下是项目中使用的配置
# 配置StatFilter StatFilter,用于统计监控信息
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.filter.stat.db-type=mysql
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=5000
# 配置WallFilter
#配置防御SQL注入攻击
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=mysql
spring.datasource.druid.filter.wall.config.delete-allow=true
spring.datasource.druid.filter.wall.config.drop-table-allow=false
spring.datasource.druid.filter.wall.config.multi-statement-allow=true
#WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter 连接泄漏监测
#WebStatFilter用于采集web-jdbc关联监控的数据。
#如果你的应用配置了WebStatFilter
#在内置监控页面weburi-detail.html中,
#查看JdbcPoolConnectionOpenCount(连接池获取连接次数)
# 和JdbcPoolConnectionCloseCount(连接池关闭连接次数)属性,
#如果不相等,就是泄漏了。
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#使用Druid的内置监控页面
spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern= /druid/*
spring.datasource.druid.stat-view-servlet.reset-enable= false
spring.datasource.druid.stat-view-servlet.login-username= xxxxx
spring.datasource.druid.stat-view-servlet.login-password= xxxxx
spring.datasource.druid.stat-view-servlet.allow= 38.71.86.1/24
#spring.datasource.druid.stat-view-servlet.deny= 192.168.32.139