目录 1、配置参数 2、使用 2.1、直接使用 2.1.1、引入依赖 2.1.2、使用例子 2.2、在 SpringBoot 中使用 2.1.1、引入依赖 2.1.2、单数据源 2.1.3、多数据源 2.1.4、开启监控功能 前言: Druid 连接池是
目录
- 1、配置参数
- 2、使用
- 2.1、直接使用
- 2.1.1、引入依赖
- 2.1.2、使用例子
- 2.2、在 SpringBoot 中使用
- 2.1.1、引入依赖
- 2.1.2、单数据源
- 2.1.3、多数据源
- 2.1.4、开启监控功能
前言:
Druid 连接池是阿里巴巴开源的数据库连接池项目,Druid 为监控而生,内置强大的监控功能,监控特性不影响性能,官网地址为:https://github.com/alibaba/druid/wiki/,本文主要介绍 Druid 的基本使用,文中使用到的软件版本:Java 1.8.0_191、Druid 1.2.8、Spring Boot 2.3.12.RELEASE。
1、配置参数
Druid
连接池的配置参数兼容 DBCP
,个别配置的语意有所区别。
(1.0.28)
1) Destroy 线程会检测连接的间隔时间,如果连接空闲时间大于等于 minEvictableIdleTimeMillis 则关闭物理连接。
2) testWhileIdle 的判断依据,详细看 testWhileIdle 属性的说明
监控统计用的 filter:stat
日志用的 filter:log4j
防御 sql 注入的 filter:wall
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); } //实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。 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、单数据源
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、多数据源
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
数据源配置类:
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、开启监控功能
Druid
内置了一些监控,Spring Boot
环境下通过少量配置就可开启这些功能。
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 #启用日志、监控统计、防火墙功能 web-stat-filter: #web监控配置 enabled: true stat-view-servlet: #监控页面配置 enabled: true url-pattern: /druid/*
监控页面:
Spring Boot
中集成 Druid 的详细说明可以参考官网文档:https://hub.fastgit.org/alibaba/druid/tree/master/druid-spring-boot-starter
到此这篇关于 Java 数据库连接池Druid 的介绍的文章就介绍到这了,更多相关 Java连接池Druid 内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!