Spring Boot 使用 Druid 和監控配置

本文爲轉帖,若是做者有侵權請做者站內留言謝謝。css

本人補充(坑):html

一、druid依賴log4j,並且druid沒有打包依賴關係,須要手動引用 java

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
 </dependency>mysql

二、若是你的項目中用了第三方的工具或插件 須要手動配置數據源則請參考下面內容。git

這是我項目中須要顯示的註冊bean,索引多了一段注入dataSource的代碼,下面是和mybatis、mybatis-plus集成的時候一個全局配置github

// DataSource配置
	@Bean
	@ConfigurationProperties(prefix = "spring.datasource")
	public DataSource dataSource() {
		return new DruidDataSource();
	}
	// 提供SqlSeesion
	@Bean
	public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
		MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource());
		GlobalConfiguration globalConfig=new GlobalConfiguration();
		globalConfig.setIdType(0);
		sqlSessionFactoryBean.setGlobalConfig(globalConfig);
		sqlSessionFactoryBean
		.setTypeAliasesPackage("com.mymall.crawlerTaskCenter.domain");
		return sqlSessionFactoryBean.getObject();
	}

Druid是Java語言中最好的數據庫鏈接池,而且可以提供強大的監控和擴展功能。web

業界把 Druid 和 HikariCP 作對比後,雖然說 HikariCP 的性能比 Druid 高,可是由於 Druid 包括不少維度的統計和分析功能,因此這也是你們都選擇使用它的緣由。spring

下面來講明如何在 spring Boot 中配置使用Druidsql

一、添加Maven依賴 (或jar包)

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.18</version>
        </dependency>
  •  

二、配置數據源相關信息

  • # 數據庫訪問配置
    # 主數據源,默認的
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=123456
    
    # 下面爲鏈接池的補充設置,應用到上面全部數據源中
    # 初始化大小,最小,最大
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    # 配置獲取鏈接等待超時的時間
    spring.datasource.maxWait=60000
    # 配置間隔多久才進行一次檢測,檢測須要關閉的空閒鏈接,單位是毫秒 
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一個鏈接在池中最小生存的時間,單位是毫秒 
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打開PSCache,而且指定每一個鏈接上PSCache的大小 
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 配置監控統計攔截的filters,去掉後監控界面sql沒法統計,'wall'用於防火牆 
    spring.datasource.filters=stat,wall,log4j
    # 經過connectProperties屬性來打開mergeSql功能;慢SQL記錄
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合併多個DruidDataSource的監控數據
    #spring.datasource.useGlobalDataSourceStat=true

     

三、配置監控統計功能

配置Servlet

以下是在SpringBoot項目中基於註解的配置,若是是web.xml配置,按規則配置便可。數據庫

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

import com.alibaba.druid.support.http.StatViewServlet;

/**
 * StatViewServlet
 *
 * @author 單紅宇(365384722)
 * @myblog http://blog.csdn.net/catoop/
 * @create 2016年3月17日
 */
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*", 
    initParams={
            @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名單 (沒有配置或者爲空,則容許全部訪問)
            @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名單 (存在共同時,deny優先於allow)
            @WebInitParam(name="loginUsername",value="shanhy"),// 用戶名
            @WebInitParam(name="loginPassword",value="shanhypwd"),// 密碼
            @WebInitParam(name="resetEnable",value="false")// 禁用HTML頁面上的「Reset All」功能
    })
public class DruidStatViewServlet extends StatViewServlet {

}
  •  

配置Filter

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

import com.alibaba.druid.support.http.WebStatFilter;

/**
 * Druid的StatFilter
 *
 * @author   單紅宇(365384722)
 * @myblog  http://blog.csdn.net/catoop/
 * @create    2016年3月17日
 */
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
    initParams={
        @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略資源
})
public class DruidStatFilter extends WebStatFilter {

}
  •  

而後啓動項目後訪問 http://yourdomain/druid/index.html 便可查看數據源及SQL統計等。 
截圖以下: 
這裏寫圖片描述

四、更多使用和常見問題

詳見:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

本文只是簡單的對如何使用Druid作了說明,其實官方包括各類很細緻的說明,建議你們仍是多看看官方說明以官方爲準,國人開發的說明天然也都是中文,通俗易懂。

相關文章
相關標籤/搜索