Druid:為監控而生的數據庫連接池.這篇先了解下它的簡單使用,下篇嘗試用它做多數據源配置。主要參考:https://github.com/alibaba/druid/wiki/常見問題 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
一、引入依賴
這里看其他博客都是引用的Druid,由於是使用springboot集成,這里參考druid官方文檔,用的是druid-spring-boot-starter。
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>
二、設置屬性
這里用的demo還是在上一博客基礎上進行的修改,所以已經配置上了數據庫連接和mybatis。
spring.mvc.view.prefix=/view/ spring.mvc.view.suffix=.jsp mybatis.type-aliases-package=com.example.model mybatis.config-location=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml #spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver #spring.datasource.url = jdbc:mysql://localhost:3306/mybatis spring.datasource.url =jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = 123456 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.max-active=20 spring.datasource.druid.initial-size=1 spring.datasource.druid.max-wait=60000 spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 spring.datasource.druid.min-idle=1 spring.datasource.druid.time-between-eviction-runs-millis=60000 spring.datasource.druid.min-evictable-idle-time-millis=300000 spring.datasource.druid.validation-query=select 1 from dual spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=true spring.datasource.druid.test-on-return=true
這里配置與其他有的博客不太一樣,spring.datasource后面多了個druid,屬性名稱也有一些變化。
三、配置連接池的監控和慢sql處理
這里只需要在啟動類同級目錄下增加一個class類配置即可。這里創建了DruidConfiguration類,這里配置了WebStatFilter配置和StatViewServlet配置.
package com.example.demo; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.*; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; @Configuration public class DruidConfiguration { @Bean public ServletRegistrationBean statViewServlet(){ //創建servlet注冊實體 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); //設置ip白名單 servletRegistrationBean.addInitParameter("allow","127.0.0.1"); //設置ip黑名單,如果allow與deny共同存在時,deny優先於allow servletRegistrationBean.addInitParameter("deny","192.168.0.19"); //設置控制台管理用戶 servletRegistrationBean.addInitParameter("loginUsername","druid"); servletRegistrationBean.addInitParameter("loginPassword","123456"); //是否可以重置數據 servletRegistrationBean.addInitParameter("resetEnable","false"); return servletRegistrationBean; } @Bean public FilterRegistrationBean statFilter(){ //創建過濾器 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //設置過濾器過濾路徑 filterRegistrationBean.addUrlPatterns("/*"); //忽略過濾的形式 filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
四、測試
這里先啟動應用,然后在瀏覽器輸入http://127.0.0.1:8080/druid/index.html,就會顯示登錄頁面,輸入上面類配置的密碼即可登錄.
然后輸入上一博客顯示用戶列表的url:http://localhost:8080/user/alluser.do,再看到druid頁面,查看SQL監控就會有剛才執行的sql信息,URL監控和Session監控也有對應的信息,由於這沒配置Spring監控所以Spring監控的信息,對於Spring監控會在以后補充,下一篇准備是使用druid配置多數據源。
五、監控配置補充
今天在看github上關於監控配置,發現文檔是直接在資源文件配置屬性,那也就是說不用創建config文件,所以剛才又試了一下,發現還真是可以。這里我直接把上面的DruidConfiguration類刪除了,然后在application.properties中增加監控配置信息就可以了。
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/*
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
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=druid
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.deny=192.168.0.19
再次運行和上面創建配置類時一樣的效果,至於spring配置因為我搜其他博客看着比較麻煩,以為還需要另外建新的文件然后在引入aop的依賴,今天試了下發現其實很方便,只需要配置一下就可以了。這里我對mapper包下的進行監控配置下面一行代碼即可搞定。
spring.datasource.druid.aop-patterns=com.example.mapper.*