在上一篇博客中咱們介紹了Spring boot配置Mybatis
,可是並無配置鏈接池,這在實際開發過程當中確定是不切實際的,屢次的數據庫鏈接會給程序和數據庫都帶來不必的負擔,這一篇博客我將介紹java中目前最好,最流行的數據庫鏈接池---Druid
。css
文章首發於我的博客:【www.xiongfrblog.cn】html
Druid
是阿里巴巴的一個開源項目,號稱爲監控而生的數據庫鏈接池,在功能、性能、擴展性方面都超過其餘例如DBCP
、C3P0
、BoneCP
、Proxool
、JBoss
DataSource
等鏈接池,並且Druid已經在阿里巴巴部署了超過600個應用,經過了極爲嚴格的考驗,這才收穫了你們的青睞!java
話很少說,下面開始在咱們的項目中配置Druid
。本篇博客在上一篇博客Spring boot 整合Mybatis的基礎上配置Druid
,關於Mybatis
鏈接數據庫的內容就很少說了。mysql
在咱們項目的pom.xml
文件中添加以下的依賴:git
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
複製代碼
這裏須要注意的是(不少人出錯的緣由),Druid
還有另一種依賴以下:github
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
複製代碼
兩種依賴均可以,可是配置的方式有些不一樣,使用下面的這種依賴項,在配置的時候須要新建
Druid
的配置類文件,而第一種依賴項則不須要,這裏我使用的就是第一種--更簡單,第二種就不介紹了,想了解的朋友請自行
我看網上的教程這一塊寫的都很模糊,直接上來就是一堆配置,也沒有代表配置是什麼意思,這對於喜歡複製粘貼的人來講很nice
可是真的不利於咱們掌握理解,因此我這裏儘可能分層給你們介紹的更清晰一些。spring
application.properties
文件中添加以下內容,代表使用Druid
鏈接池:#代表使用Druid鏈接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
複製代碼
#配置實體類的位置
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
複製代碼
經過別名的方式配置擴展插件,經常使用的插件有:sql
別名 | 含義 |
---|---|
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默認值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
的配置就基本完成了,想要了解更多的朋友,能夠去查閱官方文檔【傳送門】
咱們直接啓動項目,瀏覽器訪問localhost:8080/druid
或者127.0.0.1:8080/druid
獲得以下頁面說明配置成功:
進入Druid
的登錄頁面,輸入咱們在配置文件中配置的用戶名和密碼登錄,進入下面的頁面:
首頁能夠看到一些基本配置信息,點擊菜單欄中的數據源能夠查看到咱們的數據源配置信息,以及鏈接池配置信息:
點擊sql監控
,查看執行sql
信息:
發現此時沒有任何sql
執行記錄,因此咱們訪問連接localhost:8080/user
(上一篇博客的內容),執行一次查詢操做,再來查看 sql監控
頁面,發現已經有了一條記錄:
點擊該條記錄能夠查看更多詳情,這裏就不介紹了,配置成功的小夥伴們能夠本身體驗Druid
的各類強大功能!
到這裏,Spring boot整合Druid
的內容就介紹完了,但願對您有所幫助,下一篇博客再見!bye~