首页 > 作文

Java 数据库连接池Druid 的介绍

更新时间:2023-04-03 22:18:11 阅读: 评论:0

目录
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 为监控而生,内置强大的监控功能,监控特性不影响性能,官网地址为:/d/file/titlepic/ style="background-color: initial">本文主要介绍 druid 的基本使用,文中使用到的软件版本:java 1.8.0_191、druid 1.2.8、spring boot 2.3.12.relea。

1、配置参数

druid 连接池的配置参数兼容 dbcp,个别配置的语意有所区别。

配置缺省值说明name配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”datasource-” + system.identityhashcode(this)。配置此属性版本至少为 1.0.5,低于该版本设置 name 会出错。 url连接数据库的 urlurname连接数据库的用户名password连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用configfilter。 driverclassname根据url自动识别这一项可配可不配,如果不配置 druid 会根据 url 自动识别 dbtype,然后选择相应的 driverclassnameinitialsize0初始化时建立物理连接的个数。初始化发生在显示调用 init 方法,或者第一次 getconnection 时maxactive8最大连接池数量maxidle8已经不再使用,配置了也没效果minidle最小连接池数量maxwait获取连接时最大等待时间,单位毫秒。配置了 maxwait 之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置uunfairlock 属性为 true 使用非公平锁。poolpreparedstatementsfal是否缓存 preparedstatement,也就是 pscache。pscache 对支持游标的数据库性能提升巨大,比如说 oracle。在 mysql 下建议关闭。maxpoolpreparedstatementperconnectionsize-1要启用 pscache,必须配置大于 0,当大于 0 时,poolpreparedstatements 自动触发修改为 true。在 druid 中,不会存在 oracle下 pscache 占用内存过多的问题,可以把这个数值配置大一些,比如说 100validationquery用来检测连接是否有效的 sql,要求是一个查询语句,常用lect ‘x’。如果 validationquery 为 null,testonborrow、testonreturn、testwhileidle 都不会起作用。validationquerytimeout单位:秒,检测连接是否有效的超时时间。底层调用 jdbc statement对象的 void tquerytimeout(int conds) 方法testonborrowtrue申请连接时执行 validationquery 检测连接是否有效,做了这个配置会降低性能。testonreturnfal归还连接时执行 validationquery 检测连接是否有效,做了这个配置会降低性能。testwhileidlefal建议配置为 true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于 timebetweenevictionrunsmillis,执行validationquery 检测连接是否有效。keepalivefal
(1.0.28)连接池中的 minidle 数量以内的连接,空闲时间超过 minevictableidletimemillis,则会执行 keepalive 操作。timebetweenevictionrunsmillis1分钟(1.0.14)有两个含义:
1) destroy 线程会检测连接的间隔时间,如果连接空闲时间大于等于 minevictableidletimemillis 则关闭物理连接。
2) testwhileidle 的判断依据,详细看 testwhileidle 属性的说明numtestsperevictionrun30分钟(1.0.14)不再使用,一个 druiddatasource 只支持一个 evictionrunminevictableidletimemillis连接保持空闲而不被驱逐的最小时间connectioninitsqls物理连接初始化的时候执行的 sqlexceptionsorter根据dbtype自动识别当数据库抛出一些不可恢复的异常时,抛弃连接filters属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
监控统计用的 filter:stat
日志用的 filter:log4j
防御 sql 注入的 filter:wallproxyfilters类型是list<com.alibaba.druid.filter.filter>,如果同时配置了 filters 和 proxyfilters,是组合关系,并非替换关系

2、使用

2.1、直接使用

2.1.1、引入依赖

<dependency>    <groupid>com.alibaba</gro最长的歌词upid>    <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.resultt;import java.sql.sqlexception;import java.sql.statement;public class druidca {    public static void main(string[] args) {        druiddatasource druiddatasource = new druiddatasource();        connection connection = null;        try {            druiddatasource.tname("测试连接池");            druiddatasource.tdriverclassname("com.mysql.cj.jdbc.driver");            druiddatasource.turl("jdbc:mysql://10.40.9.11:3306/mydb?uunicode=true&characterencoding=utf-8");            druiddatasource.turname("root");            druiddatasource.tpassword("123456");            druiddatasource.tinitialsize(2);            druiddatasource.tminidle(2);            druiddatasource.tmaxactive(5);            druiddatasource.tvalidationquery("lect 1");            druiddatasource.ttestwhileidle(true);            druiddatasource.ttestonborrow(true);            druiddatasource.ttestonreturn(fal);            druiddatasource.tmaxwait(6000);            druiddatasource.tfilters("slf4j");            connection = druiddatasource.getconnection();            statement st = connection.createstatement();            resultt rs = st.executequery("lect version()");            if (rs.next()) {                system.out.println(rs.getstring(1));            }        } catch (sqlexception e) {            e.printstacktrace();        } finally {            clo(connection);        }        //实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。        druiddatasource.clo();    }    private static void clo(connection connection) {        if (connection != null) {            try {                connection.clo();            } 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.relea</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&游记范文gt;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?uunicode=true&characterencoding=utf-8    urname: root    password: 123456    type: com.alibaba.druid.pool.druiddatasource    druid:      initial-size: 2      min-idle: 2      max-active: 5      validation-query: lect 1      test-while-idle: true      test-on-borrow: true      test-on-return: fal      max-wait: 6000      filter: slf4j

使用:

@autowiredprivate 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?uunicode=true&characterencoding=utf-8        urname: root        password: 123456        initial-size: 2 六年级作文大全       min-idle: 2        max-active: 5        validation-query: lect 1        test-while-idle: true        test-on-borrow: true        test-on-return: fal        max-wait: 6000        filter: slf4j      db2:        driver-class-name: com.mysql.cj.jdbc.driver        url: jdbc:mysql://10.40.9.12:3306/mydb?uunicode=true&characterencoding=utf-8        urname: root        password: 123456        initial-size: 2        min-idle: 2        max-active: 5        validation-query: lect 1        test-while-idle: true        test-on-borrow: true        test-on-return: fal        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;@configurationpublic 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?uunicode=true&characterencoding=utf-8    urname: root    p电烙铁的使用方法assword: insyr0ot187!    type: com.alibaba.druid.pool.druiddatasource    druid:      initial-size: 2      min-idle: 2      max-active: 5      validation-query: lect 1      test-while-idle: true      test-on-borrow: true      test-on-return: fal      max-wait: 6000      filter: slf4j,stat,wall #启用日志、监控统计、防火墙功能      web-stat-filter:    #web监控配置        enabled: true      stat-view-rvlet:  #监控页面配置        enabled: true        url-pattern: /druid/*

监控页面:

spring boot 中集成 druid 的详细说明可以参考官网文档:https://hub.fastgit.org/alibaba/druid/tree/master/druid-spring-boot-starter

到此这篇关于 java 数据库连接池druid 的介绍的文章就介绍到这了,更多相关 java连接池druid 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-03 22:18:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1ec6eb7380ff472631b434c4b7a5aa88.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java 数据库连接池Druid 的介绍.doc

本文 PDF 下载地址:Java 数据库连接池Druid 的介绍.pdf

下一篇:返回列表
标签:数据源   连接池   时间   初始化
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图