Java?數(shù)據(jù)庫連接池Druid?的介紹
前言:
Druid 連接池是阿里巴巴開源的數(shù)據(jù)庫連接池項(xiàng)目,Druid 為監(jiān)控而生,內(nèi)置強(qiáng)大的監(jiān)控功能,監(jiān)控特性不影響性能,官網(wǎng)地址為:https://github.com/alibaba/druid/wiki/,本文主要介紹 Druid 的基本使用,文中使用到的軟件版本:Java 1.8.0_191、Druid 1.2.8、Spring Boot 2.3.12.RELEASE。
1、配置參數(shù)
Druid 連接池的配置參數(shù)兼容 DBCP,個(gè)別配置的語意有所區(qū)別。
2、使用
2.1、直接使用
2.1.1、引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
2.1.2、使用例子
package com.abc.demo.general.dbpool;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DruidCase {
public static void main(String[] args) {
DruidDataSource druidDataSource = new DruidDataSource();
Connection connection = null;
try {
druidDataSource.setName("測試連接池");
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123456");
druidDataSource.setInitialSize(2);
druidDataSource.setMinIdle(2);
druidDataSource.setMaxActive(5);
druidDataSource.setValidationQuery("select 1");
druidDataSource.setTestWhileIdle(true);
druidDataSource.setTestOnBorrow(true);
druidDataSource.setTestOnReturn(false);
druidDataSource.setMaxWait(6000);
druidDataSource.setFilters("slf4j");
connection = druidDataSource.getConnection();
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("select version()");
if (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(connection);
}
//實(shí)際使用中一般是在應(yīng)用啟動(dòng)時(shí)初始化數(shù)據(jù)源,應(yīng)用從數(shù)據(jù)源中獲取連接;并不會(huì)關(guān)閉數(shù)據(jù)源。
druidDataSource.close();
}
private static void close(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.2、在 SpringBoot 中使用
2.1.1、引入依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
2.1.2、單數(shù)據(jù)源
application.yml 配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 2
min-idle: 2
max-active: 5
validation-query: select 1
test-while-idle: true
test-on-borrow: true
test-on-return: false
max-wait: 6000
filter: slf4j
使用:
@Autowired private DataSource dataSource;
2.1.3、多數(shù)據(jù)源
application.yml 配置:
spring:
datasource:
druid:
db1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.140.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
initial-size: 2
min-idle: 2
max-active: 5
validation-query: select 1
test-while-idle: true
test-on-borrow: true
test-on-return: false
max-wait: 6000
filter: slf4j
db2:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.40.9.12:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
initial-size: 2
min-idle: 2
max-active: 5
validation-query: select 1
test-while-idle: true
test-on-borrow: true
test-on-return: false
max-wait: 6000
filter: slf4j
數(shù)據(jù)源配置類:
package com.abc.demo.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Primary
@Bean("dataSource1")
@ConfigurationProperties("spring.datasource.druid.db1")
public DataSource dataSourceOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean("dataSource2")
@ConfigurationProperties("spring.datasource.druid.db2")
public DataSource dataSourceTwo(){
return DruidDataSourceBuilder.create().build();
}
}
使用:
@Autowired
@Qualifier("dataSource1")
private DataSource dataSource1;
@Autowired
@Qualifier("dataSource2")
private DataSource dataSource2;
2.1.4、開啟監(jiān)控功能
Druid 內(nèi)置了一些監(jiān)控,Spring Boot 環(huán)境下通過少量配置就可開啟這些功能。
application.yml 配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8
username: root
password: InsYR0ot187!
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 2
min-idle: 2
max-active: 5
validation-query: select 1
test-while-idle: true
test-on-borrow: true
test-on-return: false
max-wait: 6000
filter: slf4j,stat,wall #啟用日志、監(jiān)控統(tǒng)計(jì)、防火墻功能
web-stat-filter: #web監(jiān)控配置
enabled: true
stat-view-servlet: #監(jiān)控頁面配置
enabled: true
url-pattern: /druid/*
監(jiān)控頁面:

Spring Boot 中集成 Druid 的詳細(xì)說明可以參考官網(wǎng)文檔:https://hub.fastgit.org/alibaba/druid/tree/master/druid-spring-boot-starter
到此這篇關(guān)于 Java 數(shù)據(jù)庫連接池Druid 的介紹的文章就介紹到這了,更多相關(guān) Java連接池Druid 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
@MapperScan掃描包里混有@Service等問題如何解決
這篇文章主要介紹了@MapperScan掃描包里混有@Service等問題如何解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
IDEA生成項(xiàng)目后出現(xiàn)的iml和idea文件問題
這篇文章主要介紹了IDEA生成項(xiàng)目后出現(xiàn)的iml和idea文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Java實(shí)現(xiàn)批量化操作Excel文件的示例代碼
在操作Excel的場景中,通常會(huì)有一些針對Excel的批量操作,這篇文章主要為大家詳細(xì)介紹了如何使用GcExcel實(shí)現(xiàn)批量化操作Excel,感興趣的可以了解一下2024-12-12
Java中的instanceof關(guān)鍵字在Android中的用法實(shí)例詳解
instanceof是Java的一個(gè)二元操作符,和==,>,<是同一類東西。接下來通過本文給大家介紹Java中的instanceof關(guān)鍵字在Android中的用法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-07-07
SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式實(shí)現(xiàn)步驟
這篇文章主要介紹了SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Spring Jpa多數(shù)據(jù)源工程配置過程解析
這篇文章主要介紹了Spring Jpa多數(shù)據(jù)源工程配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

