前言
在上一篇部落格中我們介紹了Spring boot配置Mybatis
,但是並沒有配置連線池,這在實際開發過程中肯定是不切實際的,多次的資料庫連線會給程式和資料庫都帶來沒必要的負擔,這一篇部落格我將介紹java中目前最好,最流行的資料庫連線池---Druid
。
文章首發於個人部落格:【www.xiongfrblog.cn】
Druid介紹
Druid
是阿里巴巴的一個開源專案,號稱為監控而生的資料庫連線池,在功能、效能、擴充套件性方面都超過其他例如DBCP
、C3P0
、BoneCP
、Proxool
、JBoss
DataSource
等連線池,而且Druid已經在阿里巴巴部署了超過600個應用,通過了極為嚴格的考驗,這才收穫了大家的青睞!
Spring boot配置Druid
話不多說,下面開始在我們的專案中配置Druid
。本篇部落格在上一篇部落格Spring boot 整合Mybatis的基礎上配置Druid
,關於Mybatis
連線資料庫的內容就不多說了。
新增依賴
在我們專案的pom.xml
檔案中新增如下的依賴:
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
複製程式碼
這裡需要注意的是(很多人出錯的原因),Druid
還有另外一種依賴如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
複製程式碼
兩種依賴都可以,但是配置的方式有些不同,使用下面的這種依賴項,在配置的時候需要新建
Druid
的配置類檔案,而第一種依賴項則不需要,這裡我使用的就是第一種--更簡單,第二種就不介紹了,想了解的朋友請自行
新增配置
我看網上的教程這一塊寫的都很模糊,直接上來就是一堆配置,也沒有表明配置是什麼意思,這對於喜歡複製貼上的人來說很nice
但是真的不利於我們掌握理解,所以我這裡儘量分層給大家介紹的更清晰一些。
- 首先在專案的配置檔案
application.properties
檔案中新增如下內容,表明使用Druid
連線池:
#表明使用Druid連線池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
複製程式碼
- 配置資料來源資訊(整合Mybatis的時候已經說過了,為了連貫性這裡再提一遍)
#配置實體類的位置
mybatis.type-aliases-package=com.web.springbootmybatis.entity
#xml檔案位置
mybatis.mapper-locations=classpath:mapper/*.xml
#mysql資料庫連線資訊配置
#mysql驅動
spring.datasource.driverClassName=com.mysql.jdbc.Driver
#資料庫連線資訊
spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#資料庫使用者名稱
spring.datasource.username=root
#資料庫密碼
spring.datasource.password=root
複製程式碼
- 接下來配置連線池的相關屬性,這些引數根據自己的需要靈活配置即可:
#初始化時建立物理連線的個數。
spring.datasource.druid.initial-size=5
#最大連線池數量
spring.datasource.druid.max-active=20
#最小連線池數量
spring.datasource.druid.min-idle=5
#獲取連線時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=3000
#是否快取preparedStatement,也就是PSCache,PSCache對支援遊標的資料庫效能提升巨大,比如說oracle,在mysql下建議關閉。
spring.datasource.druid.pool-prepared-statements=false
#要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache佔用記憶體過多的問題,可以把這個數值配置大一些,比如說100
spring.datasource.druid.max-open-prepared-statements= -1
#配置檢測可以關閉的空閒連線間隔時間
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 配置連線在池中的最小生存時間
spring.datasource.druid.min-evictable-idle-time-millis= 300000
spring.datasource.druid.max-evictable-idle-time-millis= 400000
複製程式碼
-
通過別名的方式配置擴充套件外掛,常用的外掛有:
別名 含義 stat 監控統計 log4j 日誌 wall 防禦sql注入 這裡我們就配置了
stat
和wall
,配置多個英文逗號分隔,配置如下:#監控統計的stat,以及防sql注入的wall spring.datasource.druid.filters= stat,wall #Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔 spring.datasource.druid.aop-patterns= com.web.springbootdruid.service.* 複製程式碼
這裡配置很重要,比如不配置
stat
,我們在Druid
的監控頁面中就拿不到想要的資訊。
- 上邊我們開啟
stat
監控統計外掛,下邊進行監控配置:
#是否啟用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/*
複製程式碼
- StatViewServlet配置:Druid內建提供了一個StatViewServlet用於展示Druid的統計資訊,StatViewServlet的用途包括:
- 提供監控資訊展示的html頁面
- 提供監控資訊的JSON API
配置如下,需要注意的是使用者名稱和密碼:
#是否啟用StatViewServlet預設值true
spring.datasource.druid.stat-view-servlet.enabled= true
#訪問路徑為/druid時,跳轉到StatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 是否能夠重置資料
spring.datasource.druid.stat-view-servlet.reset-enable=false
# 需要賬號密碼才能訪問控制檯,預設為root
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=druid
#IP白名單
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
# IP黑名單(共同存在時,deny優先於allow)
spring.datasource.druid.stat-view-servlet.deny=
複製程式碼
到這裡,關於Druid
的配置就基本完成了,想要了解更多的朋友,可以去查閱官方文件【傳送門】
驗證Druid
我們直接啟動專案,瀏覽器訪問localhost:8080/druid
或者127.0.0.1:8080/druid
得到如下頁面說明配置成功:
進入Druid
的登陸頁面,輸入我們在配置檔案中配置的使用者名稱和密碼登陸,進入下面的頁面:
首頁可以看到一些基本配置資訊,點選選單欄中的資料來源可以檢視到我們的資料來源配置資訊,以及連線池配置資訊:
點選sql監控
,檢視執行sql
資訊:
發現此時沒有任何sql
執行記錄,所以我們訪問連結localhost:8080/user
(上一篇部落格的內容),執行一次查詢操作,再來檢視 sql監控
頁面,發現已經有了一條記錄:
點選該條記錄可以檢視更多詳情,這裡就不介紹了,配置成功的小夥伴們可以自己體驗Druid
的各種強大功能!
結語
到這裡,Spring boot整合Druid
的內容就介紹完了,希望對您有所幫助,下一篇部落格再見!bye~