1. 程式人生 > >Spring boot2.0以上整合Druid連線池及監控資訊配置

Spring boot2.0以上整合Druid連線池及監控資訊配置

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:

輸入剛才配置的使用者名稱密碼即可看到監控後臺

                ---------------------------------------------歡迎關注公眾號(生活不止有程式碼)-------------------------------------------------------