Springboot 2.1.x配置Druid

2,295 阅读3分钟

Springboot 2.1.x配置Druid

1、导入依赖

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

一般我们会导入druid的jar包或者是导入springboot封装好的starter,我觉得用druid-spring-boot-starter比较容易配置而且好用,推荐导入这个,不要去用原生的jar包。

2、配置

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://xxx


spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#####datasource druid pool
spring.datasource.druid.filters= stat
spring.datasource.druid.initial-size=10
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=8

#####druid监控配置
## WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
#是否启用StatFilter默认值true
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/*
#session统计功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true
#最大session数
spring.datasource.druid.web-stat-filter.session-stat-max-count=100000
#你可以配置principalSessionName,使得druid能够知道当前的session的用户是谁
spring.datasource.druid.web-stat-filter.principal-session-name=admin
#你可以配置principalSessionName,使得druid能够知道当前的cookie的用户是谁
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
#置profileEnable能够监控单个url调用的sql列表。
spring.datasource.druid.web-stat-filter.profile-enable=true

## StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
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=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=111111


## Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
spring.datasource.druid.aop-patterns= org.lsh.dubhe.service.*

#配置wall filter
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

​ 首先当然能就是配置数据源啦,用户名、密码等等,这些与配置jdbc无异,下面一大堆就是对druid特色功能的配置,比如监控页的路径、登录用户的账号密码啥的,看上面注释吧。要想要更多的信息,可以去百度druid的wiki,里面有详细介绍。

​ springboot2.x与springboot1.x的差异就是后面那些WebStatFilter、StatViewServlet等可以通过配置文件直接配置,不用去写代码来配置,这也使得我们整个druid更加方便。

3、坑

在配置完成后,启动项目后我发现不能进入到druid的监控页,报404错误。我当时是用>springboot2.2.1版本,初步怀疑是druid-spring-boot-starter版本低了,所以我用了druid的最新版本,结果还是404。百度后,说是springboot版本太高,我就把他换到2.1.10了,druid也切换成1.1.10,最后也成功了。

所以,导入依赖时去Maven仓库看看哪个依赖版本别人用的多,依赖之间有什么版本要求,不然有时候出错网上都找不到答案,宁就是第一位踩坑的人了!

第二个坑就是忘记了我数据库用docker的,端口是从3307映射到3306的,配置里却还是写成了3306,低级错误!

写配置一定要注意,不然这种错误错的毫无技术含量,又浪费时间。