springboot 引入 druid 資料來源監控
Druid是Java語言中最好的資料庫連線池。Druid能夠提供強大的監控和擴充套件功能。Druid內建提供了一個StatViewServlet用於展示Druid的統計資訊。
第一步、引入依賴
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.5</version> </dependency>
第二步、配置 application.properties 檔案
#資料來源配置 spring.datasource.url=jdbc:mysql://192.168.0.131:3306/hongone?useAffectedRows=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #druid連線池 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 連線池的配置資訊 # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置獲取連線等待超時的時間 spring.datasource.maxWait=30000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 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 # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000
注意 : 這裡的配置根據專案需要去進行自定義,比如 超時連線時間 、慢 sql 查詢時間 等
第三步、資料來源配置檔案
package com.hone.system.utils.druid; import com.alibaba.druid.pool.DruidDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.sql.SQLException; @Configuration public class DruidDBConfig{ private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class); @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${spring.datasource.initialSize}") private int initialSize; @Value("${spring.datasource.minIdle}") private int minIdle; @Value("${spring.datasource.maxActive}") private int maxActive; @Value("${spring.datasource.maxWait}") private int maxWait; @Value("${spring.datasource.timeBetweenEvictionRunsMillis}") private int timeBetweenEvictionRunsMillis; @Value("${spring.datasource.minEvictableIdleTimeMillis}") private int minEvictableIdleTimeMillis; @Value("${spring.datasource.validationQuery}") private String validationQuery; @Value("${spring.datasource.testWhileIdle}") private boolean testWhileIdle; @Value("${spring.datasource.testOnBorrow}") private boolean testOnBorrow; @Value("${spring.datasource.testOnReturn}") private boolean testOnReturn; @Value("${spring.datasource.poolPreparedStatements}") private boolean poolPreparedStatements; @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}") private int maxPoolPreparedStatementPerConnectionSize; @Value("${spring.datasource.filters}") private String filters; @Value("{spring.datasource.connectionProperties}") private String connectionProperties; /** * @Bean 宣告,DataSource 物件為 Spring 容器所管理; * @Primary 表示這裡定義的DataSource將覆蓋其他來源的DataSource。 * StatFilter,用於統計監控資訊。StatFilter的別名是stat。 * 統計SQL資訊,合併統計。mergeStat是的MergeStatFilter縮寫。 * 通過 DataSource 的屬性<property name="filters" value="mergeStat" /> 或者 * connectProperties屬性來開啟mergeSql功能 <property name="connectionProperties" value="druid.stat.mergeSql=true" /> * StatFilter屬性slowSqlMillis用來配置SQL慢的標準 * * @return */ @Bean @Primary public DataSource dataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(dbUrl); datasource.setDriverClassName(driverClassName); datasource.setUsername(username); datasource.setPassword(password); //configuration datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); try { /** * 設定StatFilter,用於統計監控資訊。 * StatFilter的別名是stat * */ datasource.setFilters(filters); } catch (SQLException e) { logger.error("druid configuration initialization filter : {0}",e); } datasource.setConnectionProperties(connectionProperties); return datasource; } }
第四步、通過註解的方式配置監控顯示頁面 Servlet
import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
/**
* StatViewServlet用於展示Druid的統計資訊。
* 提供監控資訊展示的html頁面
* 提供監控資訊的JSON API
*
* 內建監控頁面的首頁是/druid/index.html
*
* loginUsername、loginPassword 登入使用者名稱和密碼
*/
/**
* @Webservlet
* 有兩個屬性可以用來表示Servlet的訪問路徑,分別是value和urlPatterns。value和urlPatterns都是陣列形式,
* 表示我們可以把一個Servlet對映到多個訪問路徑,但是value和urlPatterns不能同時使用。
*
*/
@WebServlet(
urlPatterns = {"/druid/*"},
initParams = {
@WebInitParam(name = "loginUsername", value = "admin"),
@WebInitParam(name = "loginPassword", value = "admin"),
@WebInitParam(name = "resetEnable", value = "false")
}
)
public class DruidStatViewServlet extends StatViewServlet {
}
第五步、通過註解的方式配置採集Filter
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* WebStatFilter用於採集web-jdbc關聯監控的資料。
* 屬性filterName宣告過濾器的名稱,可選
* 屬性urlPatterns指定要過濾 的URL模式,也可使用屬性value來宣告.(指定要過濾的URL模式是必選屬性)
*/
@WebFilter(
urlPatterns = "/*",
initParams = {
@WebInitParam(name = "exclusions",value = "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*")
}
)
public class DruidStatFilter extends WebStatFilter {
}
第六步、啟動類修改
@SpringBootApplication
@MapperScan("com.hone.dao") //開啟mapper掃描
@ServletComponentScan //開啟servlet掃描
public class HongoneApplication {.....}
最後,啟動專案進行測試 在瀏覽器中輸入 http://localhost:8080/druid/index.html
(注意: 如果你的專案設定了訪問字首 , 訪問地址問 http://localhost:8080/訪問字首/druid/index.html )
相關推薦
springboot 引入 druid 資料來源監控
Druid是Java語言中最好的資料庫連線池。Druid能夠提供強大的監控和擴充套件功能。Druid內建提供了一個StatV
初學SpringBoot遇到引入Druid資料來源繫結spring.datasource異常
自己出現的異常資訊一下圖片的錯誤 然後在pom.xml引入log4j依賴就可以了 <dependency> <groupId>log4j</groupId> <a
springboot druid 資料來源監控
首現要在配置資料來源的地方開啟要監控 # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆 filters: stat,wall,log4j package com.lenovo.esim.cloud.order.config.datasourcemon
從零學springboot—— 配置druid資料來源,並開啟監控
匯入依賴 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version&g
springboot配置druid資料來源和監控
資料來源使用的是阿里的Driud。 1.配置之前 先看一下xml的配置。 -------------------spring-mybatis.xml檔案-------------------------- <!-- 引入屬性檔案 --> <cont
SpringBoot整合druid資料來源及新增Druid監控頁面
不是不會,只是沒見過,程式碼只是一種工具,首先要會用,應用中使用druid連線池,並新增監控 1.首先引入druid座標 <dependency> <groupId>com.alibaba</groupId>
springboot配置Druid資料來源
springboot配置druid資料來源 Author:SimpleWu springboot整合篇 前言 對於資料訪問層,無論是Sql還是NoSql,SpringBoot預設採用整合SpringData的方式進行統一管理,新增大量的自動配置,遮蔽了很多設定。引入了各種XxxTemplat
SpringBoot使用Druid資料來源
Druid是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池(據說是目前最好的連線池) 一、依賴 為了測試,使用jdbcTempla
SpringBoot配置Druid資料來源,持久層分別 mybatis,jdbc
Druid與mybatis整合: application.yaml 配置引數檔案 spring: datasource: #driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.cj.j
Springboot整合Druid資料來源
yml檔案 spring: datasource: url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8 username: root password: 123456
SpringBoot整合Druid資料來源並監控程式與資料庫資源互動情況
Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。(Druid可以幫我們時時監控程式與資料庫的互動情況) SpringBoot整合Druid使用步驟: 1. 新建一個Springboot專案後(或者在現有的springboo
十、SpringBoot整合Druid資料來源
1、新增pom依賴 <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifa
SpringBoot(九):SpringBoot使用Druid資料來源
Druid是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池(據說是目前最好的連線池) 一、依賴 為
Druid資料來源監控及慢sql記錄使用文件
註冊druid 監控servlet使用者名稱:admin密碼: [email protected]使用者名稱和密碼可以修改。@Value("${druid.stat.loginUsername:admin}")private String loginUsername;@Value("${druid.
springboot整合druid,sql監控無效果,解決方案
專案中引入的依賴: 問題分析: 1.配置檔案中的druid的配置引數資訊格式是否有錯誤,如下,是否全都是spring.datasource.* 如果格式有錯誤,那麼 new DruidDataSource()建立成功也是有問題的 2.配置統計攔截的
SpringBoot資料訪問------Druid資料來源(新增監控)
DRUID是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池。 SpringBoot整合Druid 1.新增Maven依
SpringBoot動態數據源 Druid及監控配置
frame 實現類 密碼 ids tro 是否 cloud ole jdb package com.creditcore.services.common.dataSource; import java.sql.SQLException; import java.util
Springboot整合Druid監控
table 註解 param AI 添加 col div eset nds 一.添加依賴 <dependency> <groupId>com.alibaba</groupId> <a
SpringBoot + Druid資料來源 Mysql資料庫 通用Mapper 等
springboot專案使用自己配置Druid資料來源,mysql資料庫,通用mapper外掛,pagehelper分頁, DruidConfiguration.class import java.sql.SQLException; import javax.sql.
springboot+mybatis+druid 多資料來源整合
前言:在上一篇文章裡面我們進行了spring boot 和 mybatis 的整合 《springboot整合mybatis使用druid資料來源》, 文中是使用的單資料來源,因為專案中有很多需要用到多資料來源的場景,比如主從同步(讀寫分離)