Spring boot2.0以上整合Druid連線池及監控資訊配置
阿新 • • 發佈:2018-12-17
1. Springboot 2.0選擇HikariCP作為預設資料庫連線池
理由參考:
2. 資料庫連線池效能比對(hikari druid c3p0 dbcp jdbc)
-
本文是整合Druid連線池,資料庫為mysql
pom檔案新增druid的依賴:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency>
application.properties配置檔案新增配置項:
# 連線池druid配置 # 初始化連線數 spring.datasource.initialSize=5 # 最小空閒連線數 spring.datasource.minIdle=5 # 最大連線數 spring.datasource.maxActive=20 # 獲取連線等待超時的時間 spring.datasource.maxWait=60000 # 間隔60秒執行一次連接回收器 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 5分鐘內沒有任何操作的空閒連線會被回收 spring.datasource.minEvictableIdleTimeMillis=300000 # 驗證連線有效性的sql spring.datasource.validationQuery=SELECT 1 FROM DUAL # 空閒時校驗,建議開啟 spring.datasource.testWhileIdle=true # 使用中是否檢驗有效性,推薦關閉 spring.datasource.testOnBorrow=false # 歸還連線時是否檢驗有效性,推薦關閉 spring.datasource.testOnReturn=false # 開啟PSCache,並且指定每個連線上PSCache的大小 spring.datasource.poolPreparedStatements=false # 配置監控統計攔截的過濾器,stat用於接收狀態,wall用於防止sql注入,logback用於使用logback日誌輸出 spring.datasource.filters=stat,wall,logback # sql合併統計,開啟mergeSql功能並設定慢sql的時間為 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000 # 合併多個DruidDataSource的監控資料 spring.datasource.useGlobalDataSourceStat=true
在啟動類或自己新建配置類中,新增程式碼:
@Bean(destroyMethod = "close",initMethod = "init") @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDatasource() { DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; } /** * 註冊後臺介面的Servlet bean, 用於顯示後臺介面 * @return */ @Bean public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() { // 建立StatViewServlet, 對映到/druid/路徑下 ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<StatViewServlet>(new StatViewServlet(), "/druid/*"); //新增初始化引數:initParams //白名單: servletRegistrationBean.addInitParameter("allow","127.0.0.1"); //IP黑名單 (存在共同時,deny優先於allow) : 如果滿足deny的話提示:Sorry, you are not permitted to view this page. servletRegistrationBean.addInitParameter("deny","192.168.1.73"); //登入檢視資訊的賬號密碼. servletRegistrationBean.addInitParameter("loginUsername","admin"); servletRegistrationBean.addInitParameter("loginPassword","123456"); //是否能夠重置資料. servletRegistrationBean.addInitParameter("resetEnable","false"); return servletRegistrationBean; } /** * 監聽獲取應用的資料,Filter用於收集資料, Servlet用於展現資料 * @return */ @Bean public FilterRegistrationBean<WebStatFilter> druidStatFilter() { FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<WebStatFilter>(new WebStatFilter()); //新增過濾規則. filterRegistrationBean.addUrlPatterns("/*"); //新增不需要忽略的格式資訊. filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; }
注:@ConfigurationProperties註解可能提示需要新增依賴,新增即可(如果沒新增的話)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
啟動專案發現數據源已改變為druid:
輸入剛才配置的使用者名稱密碼即可看到監控後臺
---------------------------------------------歡迎關注公眾號(生活不止有程式碼)-------------------------------------------------------