1. 程式人生 > >SpringBoot之整合Druid資料來源

SpringBoot之整合Druid資料來源

在上一節的專案上引入依賴

引入依賴

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

這裡有一個坑!!! 

我們要引入的是上面的依賴,不是下面這個 依賴,不然在後面 會訪問不了監控頁面。

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.5</version>
        </dependency>

修改配置檔案

# mybatis
mybatis.type-aliases-package=com.example.miaosha_xdp.entity
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=3000
mybatis.mapperLocations = classpath:mapper/*.xml
# druid
spring.datasource.url=jdbc:mysql://xdp:3306/miaosha?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 初始化時建立物理連線的個數
spring.datasource.druid.initial-size=5
# 最大連線池數量
spring.datasource.druid.max-active=30
# 最小連線池數量
spring.datasource.druid.min-idle=5
# 獲取連線時最大等待時間,單位毫秒
spring.datasource.druid.max-wait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 連線保持空閒而不被驅逐的最小時間
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 用來檢測連線是否有效的sql,要求是一個查詢語句
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
# 建議配置為true,不影響效能,並且保證安全性。申請連線的時候檢測,如果空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連線是否有效。
spring.datasource.druid.test-while-idle=true
# 申請連線時執行validationQuery檢測連線是否有效,做了這個配置會降低效能。
spring.datasource.druid.test-on-borrow=false
# 歸還連線時執行validationQuery檢測連線是否有效,做了這個配置會降低效能。
spring.datasource.druid.test-on-return=false
# 是否快取preparedStatement,也就是PSCache。PSCache對支援遊標的資料庫效能提升巨大,比如說oracle。在mysql下建議關閉。
spring.datasource.druid.pool-prepared-statements=true
# 要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=50
# 配置監控統計攔截的filters,去掉後監控介面sql無法統計
spring.datasource.druid.filters=stat,wall
# 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# 合併多個DruidDataSource的監控資料
spring.datasource.druid.use-global-data-source-stat=true

測試訪問

在瀏覽器輸入http://localhost:8080/druid

可以看到以下頁面。這是druid的監控中心

在資料庫介面輸入查詢:show full processlist

可以看到如下資訊:

可以看到,啟動專案後,直接建立5個數據連線,這是由application.properties配置檔案中spring.datasource.druid.initial-size=5控制的。

druid監控

瀏覽器輸入http://localhost:8080/druid直接就能看到druid控制檯介面,在這裡面可以看到很多專案資訊,如果任憑使用者隨意訪問,非常危險。我們可以通過配置,設定只有通過登入認證才可以訪問。

application.properties配置檔案中增加:

# druid連線池監控
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123
# 排除一些靜態資源,以提高效率
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*

再次訪問監控中心,可以看到需要登陸,登陸名和密碼就是我們 上面設定的