使用spring boot中配置druid的時候遇到的幾個坑
首先spring boot版本 2.1.0
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
druid版本 1.1.10
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter druid 數據源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
版本一定要一致
yml文件配置
spring:
datasource:
url: jdbc:mysql://你自己的url
username: 數據庫賬號
password: 數據庫密碼
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 下面爲連接池的補充設置,應用到上面所有數據源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置獲取連接等待超時的時間
max-wait: 60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打開PSCache,並且指定每個連接上PSCache的大小
pool-prepared-statements: true
# 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 配置監控服務器
stat-view-servlet:
login-username: admin
login-password: 123456
reset-enable: false
url-pattern: /druid/*
# 添加IP白名單
#allow:
# 添加IP黑名單,當白名單和黑名單重複時,黑名單優先級更高
#deny:
web-stat-filter:
# 添加過濾規則
url-pattern: /*
# 忽略過濾格式
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
坑一:
一開始根本不知道怎麼玩,查找到的文章中的yml文件千篇一律,因爲版本的原因,yml文件有的時候不能一致和生效
特別是在 配置
filters: stat,wall
的時候,總是報錯。網上給的參數的話這裏都是三個參數,還有一個log4j
在他們的配置中是不會報錯的,一般是spring boot 1.5中可以使用,但是到了2.0之後加上log4j就會報錯,2.0之後2.1記得去掉。
坑二:
看了很多,都是使用了還要寫一個配置類然後用@Configuration註解交給spring管理創建 stat-view-servlet(監控服務器)和web-stat-filter(攔截器)
然後我就跟着文章上面的去配了,在配置類中配置url-mapping啦,賬號,用戶名啦,然後攔截規則和放行規則啦等等
然後打開 localhost:8080/druid 很開心,我擦成功了
然後有一天我把spring boot版本換到了2.1問題就來了, 項目啓動報錯,意思是startfilter重複定義 就是說在yml中已經默認給你配了startfilter然後你在配置類中又用@Bean注入了一個startfilter 在spring boot 2.0中是可以啓動的,但是2.1不行,這個問題搞了我好久。然後發現可以完全不用配置類,全部都用yml參數來注入。參照我上面的配置吧,注意boot和druid的版本哦!
坑三:
在springBoot2.1中
driver-class-name: com.mysql.jdbc.Driver
你的數據庫驅動類是不用手動指定的
加載類'COM.MySQL .jDBC.Cudio'。這是不贊成的。新的驅動程序類是'COM.MySQL .cj.jdbc .驅動程序'.驅動程序通過SPI自動註冊,並且通常不需要手動加載驅動程序類。
把這個去掉就行了。
只要版本是我寫的這兩個都是蠻新的,照搬就行了。到此純yml配置druid完成。
對了最後提一下
web-stat-filter:
# 添加過濾規則
url-pattern: /*
# 忽略過濾格式
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
這裏的exclusions忽略過濾格式 記得一定要加 " " 不然也是錯的