SpringBoot整合Druid使用官方starter
導入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!--Druid starter-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
編寫application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3307/webapp1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: webapp1
password: webapp1
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默認是不注入這些屬性值的,需要自己綁定
#druid 數據源專有配置
# 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 200
# 配置獲取連接等待超時的時間
maxWait: 60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
minEvictableIdleTimeMillis: 300000
# 用來檢測連接是否有效的sql,要求是一個查詢語句
validationQuery: SELECT 1 FROM DUAL
# 建議配置為true,不影響性能,並且保證安全性。申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
testWhileIdle: true
# 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能
testOnBorrow: false
# 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
testOnReturn: false
# 是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉。
poolPreparedStatements: true
# 要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。
max-pool-prepared-statement-per-connection-size: 50
#配置監控統計攔截的filters,stat:監控統計、log4j:日志記錄、wall:防御sql注入
#如果允許時報錯 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#則導入 log4j 依賴即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
# 合並多個DruidDataSource的監控數據
useGlobalDataSourceStat: true
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
進行測試
package com.xiang;
import com.alibaba.druid.pool.DruidDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@SpringBootTest
class SpringBootDatabaseApplicationTests {
@Autowired
DataSource dataSource;
@Autowired
DruidDataSource druidDataSource;
@Test
public void DruidDataSource() throws SQLException {
//看一下默認數據源
System.out.println(dataSource.getClass());
//獲得連接
Connection connection = dataSource.getConnection();
System.out.println(connection);
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
System.out.println("druidDataSource 數據源最大連接數:" + druidDataSource.getMaxActive());
System.out.println("druidDataSource 數據源初始化連接數:" + druidDataSource.getInitialSize());
//關閉連接
connection.close();
}
@Test
public void druiddataSourceTest(){
System.out.println(druidDataSource.getVersion()+" "+druidDataSource.getClass());
//1.2.5 class com.alibaba.druid.pool.DruidDataSource ---這個是寫了自定義config
//1.2.5 class com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper ---這個是Druid官方提供的starter啟動器
}
}
運行結果
