druid druid-spring-boot-starter

阅读数:195 评论数:0

跳转到新版页面

分类

python/Java

正文

一、概述

druid是阿里开源的数据库连接池。

二、springboot集成druid

1、方式一

<dependency>       
    <groupId>com.alibaba</groupId>       
    <artifactId>druid</artifactId>       
    <version>1.1.12</version>   
</dependency>

2、方式二

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.22</version>
</dependency>

3、数据源配置

spring.datasource.druid.url= # 或spring.datasource.url= 
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=

这些配置项是DruidDataSource和DruidAbstractDataSource的public final 属性。

name 配置这个属性的意义在于,如果存在多个数据源,监控的时候,可以通过名字来区分。如果没有配置,将会生成一个名字。
jdbcUrl 连接数据库的url,不同数据不一样。
username 连接数据库的用户名。
password 连接数据库的密码,如果不希望数据密码直接写在配置文件中,可以使用ConfigFilter. https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName 这一项可不配置,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName。
initialSize

默认值是0,初始化时建立物理连接的个数。初始化发生在显式调用init方法,或者第一次getConnection时。

maxActive 默认8,最大连接池数量。
minIdle 最小连接池数量
maxWait 获取连接时最大等待时间,单位ms。配置了maxWait之后,缺省启用公平锁,并发效率有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatement  默认false,是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提巨大,比如说Oracle。在mysql5.5以下的版本中没有PSCache功能,建议关掉。5.5及以版本有PSCache,建议开启。
maxOpenPreparedStatements 默认-1,当大于0时,poolPreparedStatements自动触发。
validationQuery

用来检测连接是否有效的sql,要求是一个查询语句,一般为select 1。如果validationQuery为null, testOnBorrow, testOnReturn, testWhileIdle都不起作用。

testOnBorrow 默认true,申请连接时检测连接是否生效,这个配置会降低性能。
testOnReturn 默认false,归还连接时检测连接是否有效,会降低性能。
testOnWhileIdle 默认false,建议设置为true,不影响性能,如果空闲时间大于timeBetweenEvictionRunMillis,执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis 有两个含义:(1)Destroy线程检测连接的时间间隔。(2)testWhileIdle的判断依据。
minEvictableIdleTimeMillis Destory线程中如果检测到当前连接的最后活跃时间和当前时间的差值大于minEvictableIdleTimeMillis,则关闭当前连接。
connectionInitSqls 物理连接初始化的时候执行的sql。
filters 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控用的stat, 日志用的log4j, 防御sql注入的wall
removeAbandoned

对于建立时间超过removeAbandonedTimeout的连接强制关闭。

removeAbandonedTimeout 指定连接建立多长时间就需要被强制关闭。
logAbandoned 指发生removeabandoned的时候,是否记录当前线程的堆栈信息到日志中。

三、关键配置项的详细说明

1、timeBetweenEvictionRunsMillis

可以控制空闲连接数的回收周期;可以控制回收泄漏连接的周期;连接的空闲时间大于该值testWhileIdle才起作用。

默认值为60s,主要作用于两个地方:

(1)作为DestroyTask执行的时间周期,Destroy主要有两个作用

判断连接池的连接空闲数是否大于minIdle,如果是则关闭多余的连接,反之则新增连接
回收连接池泄漏的连接

(2)作为验证连接是否有效的时间周期

如果testOnBorrow为false,并且testWhileIdle为true,则在应用获取连接的时候会判断连接的空闲时间是否大于timeBetweenEvictionRunsMillis,如果大于则会验证该连接是否有效。

2、validationQuery

// 连接有效性检测,MySQL支持两种
(ping和validationQuery sql,默认为ping,其他数据库只支持validationQuery )
druid.mysql.usePingMethod
validationQuery



相关推荐

一、概述 Druid(德鲁伊)是Java语言中的数据库连接池,Spring Boot 2.x默认使用Hikari数据源,虽然HikariCP的速度稍快,但是,Druid能够提供强大的监控和扩展功能。

一、request uri部分 @PathVariable 获取路径参数,形如url/{id} 二、request header部分 @RequestHeade

一、概述 一个项目使用多个数据库(无论是主从复制--读写分离还是分布式数据库结构)的重要性变得越来越明显,整合的多数据源有两种方式:分包和aop。 1、SqlSessionTemplate SqlSe

一、概述 PageHelper是开源免费的mybatis第三方分页插件。 二、使用 1、pom引入 <dependency> <groupId>com.github.pageh

一、日志框架的介绍 Spring Boot 2.*默认采用slf4j+logback的形式,slf4j是个通用的日志门面,logback就是个具体的日志框架了。

一、问题解决方式 @PostMapping("/insert") @ResponseBody private ResultVO insert1(@RequestParam Map<String, St

JJWT 全称Java Json Web Token。 而JWT是一种在两方之间传输信息的方法,在jwt的主体中编码的信息被称为claims。jwt的扩展形式是json,因此每个c

POM依赖 &lt;dependency&gt; &lt;groupId&g

一、概述 @EnableConfigurationProperties注解的作用是:让使用了@ConfigurationProperties注解的类生效,并且将该类注入到IOC容器中,交由IOC容器进

1、配置文件的格式 springboot可以识别两种格式的配置文件,分别是yml文件与properties文件,我们可以将application.properties文件换成a