druid连接池的简单使用

原创 2017年10月06日 21:11:05

- druid连接池介绍
为监控而生的数据库连接池,它是阿里巴巴开源平台上的一个项目。Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能(黄婆卖瓜,自卖自夸哈哈)。它可以替换DBCP和C3P0连接池。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。它与其他数据库连接池的不同是因为
1.其可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
2.可以对数据库密码进行加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
3.SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
4.扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
在项目中使用Druid非常简单,只要修改下配置文件就可以了
目前我接触到的还只有1,2,3点

- druid的简单应用
使用方式和c3p0数据库连接池差不多。
1.数据库配置文件:
db.properties

url=jdbc:mysql://localhost:3306/resturant
username=root
publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIwaWa8iwmhHzR19o9QCF1gkgtU+F3fCKIBGdOOjG6fESPks2mNxnBdYp1qPdqLCidRCpjE+28QGpgLZA7/KL9sCAwEAAQ==
password=c95kreacIlDNCrI4g7lYnLTOFFZnqZHHKt75hj/qo0uFAcYICyP8Ew1a/hPtfGKhs8abDmQfyooQWDPn6IcUmw==
filters=stat,config
initialSize=2
maxActive=300
minIdle=2
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
removeAbandoned=true
logAbandoned=true
poolPreparedStatements=false
removeAbandonedTimeout=1800
maxOpenPreparedStatements=100

Spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--读取配置文件-->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
            </list>
        </property>
    </bean>

    <context:component-scan base-package="com.cqupt.ssm"/>

    <!--数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">


        <property name="url" value="${url}"/>
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!--提示Druid数据源需要对数据库密码进行解密-->
        <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publickey}" />

        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}" />
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="${maxActive}"/>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"/>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"/>

        <!-- 缓存PreparedStatements,也就是PSCache,支持游标的数据库才有用 如oracle mysql5.5以上  -->
        <property name="poolPreparedStatements" value="${poolPreparedStatements}"/>
        <!--要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动修改为true。 -->
        <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}"/>
        <!--用来检测连接是否有效的sql,要求是一个查询。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。-->
        <property name="validationQuery" value="${validationQuery}" />
        <!--申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。-->
        <property name="testOnBorrow" value="${testOnBorrow}" />
        <!--关闭连接时validationQuery检测链接是否有效,做了这个配置会降低性能-->
        <property name="testOnReturn" value="${testOnReturn}" />
        <!--建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->
        <property name="testWhileIdle" value="${testWhileIdle}" />

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}"/>

        <!-- 对长时间不使用的连接进行关闭 -->
        <property name="removeAbandoned" value="${removeAbandoned}"/>
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="${logAbandoned}"/>

        <!-- 监控数据库 -->
        <property name="filters" value="${filters}"/>

    </bean>

    <!--SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" scope="prototype">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <!--sqlSessionTemplate-->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>


    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!--使用注解管理事务-->

    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

    <bean id="configurer"
          class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.cqupt.ssm" />
        <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate" />
        <property name="annotationClass" value="org.springframework.stereotype.Repository"/>
    </bean>

</beans>

1.如何对数据库密码进行加密:
在命令行中执行如下命令:

java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools you_password

可以获得加密以后的publickey和password,然后在配置文件中开启对密码的解密

2.配置文件中为什么没有driverClassName
因druid会自动根据url自动识别DriverClass的,通过识别url的前缀实现

3.一些常用配置属性:可以参考:
https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8

版权声明:本文为博主原创文章,未经博主允许不得转载。

阿里巴巴数据库连接池的使用

在pom.xml文件里面加入maven包: 1.0.0 com.alibaba druid ${com.alibaba.druid.version} 在spring....
  • mll999888
  • mll999888
  • 2017年06月05日 12:32
  • 253

阿里巴巴开源连接池详解

阿里巴巴开源连接池详解
  • makang110
  • makang110
  • 2017年07月12日 13:54
  • 511

阿里Druid连接池配置使用

项目中有用到数据库连接池技术,这次我们使用阿里公司的Druid连接池。Druid对数据库的监控做的很好,可以详细统计SQL执行的性能。具体使用:如果是maven项目,加入如下依赖码到pom.xml文件...
  • yiyunjmy
  • yiyunjmy
  • 2016年06月30日 14:49
  • 2707

Druid数据库连接池及内置监控的配置和使用

Druid介绍    Druid首先是一个数据库连接池,并且是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss...
  • aqsunkai
  • aqsunkai
  • 2016年06月26日 22:47
  • 5302

Druid连接池简介和配置

Druid集连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0的,现在换一个连接池也是很简单的,首先spring配置DataSource,配置如下: [html] vi...
  • burpee
  • burpee
  • 2016年05月26日 14:51
  • 4146

java-Druid连接池简单配置

首先Druid是一个数据库连接池 包含:           DruidDataSource 数据库连接池 ProxyDriver 是Filter-Chain模式(过滤器链),用于监视Sql...
  • u013147600
  • u013147600
  • 2015年11月05日 11:26
  • 856

Java Druid大数据连接池的实例应用 和工具类

Druid大数据导入的工具类package dashuju; import com.alibaba.druid.pool.DruidPooledConnection; import org.apa...
  • CNZYYH
  • CNZYYH
  • 2017年10月27日 10:32
  • 352

Druid集连接池简单使用

转载:http://blog.csdn.net/pk490525/article/details/12621649 偶尔的机会解释Druid连接池,后起之秀,但是评价不错,另外由于是阿里淘宝使用...
  • u012589040
  • u012589040
  • 2016年09月05日 09:17
  • 101

数据库统一使用Druid连接池

数据库统一使用Druid连接池 转至元数据结尾 Created by 王振雷, last modified 昨天3:36 下午 转至元数据起始 由于微支付交易、支付系...
  • gaoqiao1988
  • gaoqiao1988
  • 2016年10月19日 11:12
  • 381

Druid,目前最好的数据库连接池

Druid是什么? Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、...
  • wade01274536
  • wade01274536
  • 2015年12月21日 10:43
  • 8163
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:druid连接池的简单使用
举报原因:
原因补充:

(最多只允许输入30个字)