Druid是一个JDBC组件,它包括三部分: 

  • DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。

  • DruidDataSource 高效可管理的数据库连接池。

  • SQLParser

Druid可以做什么? 

1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

[摘自OSChina:http://www.oschina.net/p/druid/]

使用druid的方式:

第一步:在spring中配置数据源

在spring中配置数据源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <!-- 基本配置,访问数据库的driver、url、user、password -->
    <property name="driverClassName" value="${jdbc.druid.driverClassName}" />
    <property name="url" value="${jdbc.druid.url}" />
    <property name="username" value="${jdbc.druid.username}" />
    <property name="password" value="${jdbc.druid.password}" />
    <!-- 配置初始化大小、最大、最小 -->
    <property name="initialSize" value="${jdbc.druid.initialSize}" />
    <property name="maxActive" value="${jdbc.druid.maxActive}" />
    <property name="minIdle" value="${jdbc.druid.minIdle}" />
    <!-- 配置获取连接等待超时的时间,单位是毫秒 -->
    <property name="maxWait" value="${jdbc.druid.maxWait}" />
    <!-- 配置监控统计拦截的filters -->
    <property name="filters" value="${jdbc.druid.filters}" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="${jdbc.druid.timeBetweenEvictionRunsMillis}" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="${jdbc.druid.minEvictableIdleTimeMillis}" />
    <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 -->
    <!-- 查询语句需要根据不同的数据源进行调整设置 -->
    <property name="validationQuery" value="${jdbc.druid.validationQuery}" />
    <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
    <property name="testWhileIdle" value="${jdbc.druid.testWhileIdle}" />
    <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
    <property name="testOnBorrow" value="${jdbc.druid.testOnBorrow}" />
    <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
    <property name="testOnReturn" value="${jdbc.druid.testOnReturn}" />
    <!-- 对于长时间不使用的连接强制关闭 -->
    <property name="removeAbandoned" value="${jdbc.druid.removeAbandoned}" />
    <!-- 超过30分钟开始关闭空闲连接 -->
    <property name="removeAbandonedTimeout" value="${jdbc.druid.removeAbandonedTimeout}" />
    <!-- 将当前关闭动作记录到日志 -->
    <property name="logAbandoned" value="${jdbc.druid.logAbandoned}" />
    <!-- 设置数据库事务是否自动提交,默认值为true -->
    <property name="defaultAutoCommit" value="${jdbc.druid.defaultAutoCommit}" />
    <!-- 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大。-->
    <property name="poolPreparedStatements" value="${jdbc.druid.poolPreparedStatements}" />
    <!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。 -->
    <property name="maxOpenPreparedStatements" value="${jdbc.druid.maxOpenPreparedStatements}" />
    <property name="maxPoolPreparedStatementPerConnectionSize" value="${jdbc.druid.maxPoolPreparedStatementPerConnectionSize}" />
</bean>

第二步:配置相关参数

配置相关参数

#根据不同的数据库信息需要作出相应的调整,如driverClassName、url、maxActive、minIdle、maxWait、validationQuery等

jdbc.druid.driverClassName = org.hsqldb.jdbcDriver
jdbc.druid.url = jdbc:hsqldb:file:d:/tmp/User1.db;hsqldb.write_delay=true
jdbc.druid.username = sa
jdbc.druid.password = 
jdbc.druid.initialSize = 5
jdbc.druid.maxActive = 20
jdbc.druid.minIdle = 10
jdbc.druid.maxWait = 3000
jdbc.druid.filters = stat
jdbc.druid.timeBetweenEvictionRunsMillis = 60000
jdbc.druid.minEvictableIdleTimeMillis = 300000
jdbc.druid.validationQuery = SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS
jdbc.druid.testWhileIdle = true
jdbc.druid.testOnBorrow = true
jdbc.druid.testOnReturn = false
jdbc.druid.removeAbandoned = true
jdbc.druid.removeAbandonedTimeout = 1800
jdbc.druid.logAbandoned = false
jdbc.druid.defaultAutoCommit = false
jdbc.druid.poolPreparedStatements = false
jdbc.druid.maxOpenPreparedStatements = 0
jdbc.druid.maxPoolPreparedStatementPerConnectionSize = 0

第三步:配置监控页面

访问页面配置
1
2
3
4
5
6
7
8
<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>

通过以上配置,在应用启动后访问http://localhost:8080/prjname/druid/

druid数据源的更多相关文章

  1. druid 数据源 使用属性文件的一个坑

    直接上代码: <bean id="propertiesFactoryBean" class="org.springframework.beans.factory.c ...

  2. Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控

    前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...

  3. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  4. SpringBoot整合阿里Druid数据源及Spring-Data-Jpa

    SpringBoot整合阿里Druid数据源及Spring-Data-Jpa https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=224 ...

  5. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)

    1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...

  6. 【2.0】SpringBoot2配置Druid数据源及监控

    什么是Druid? Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目.Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池, ...

  7. 整合Druid数据源

    pom依赖: <!--引入druid数据源--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> & ...

  8. Druid数据源对数据库访问密码加密好麻烦

    开发中,druid数据源对数据库密码进行了加密,每次切换数据库或者修改密码后,感觉很麻烦. 解决办法: 1.用工具类中的Java代码进行加解密. 需要用到com.alibaba.druid.filte ...

  9. 21. Spring Boot Druid 数据源配置解析

    1.数据源配置属性类源码 package org.springframework.boot.autoconfigure.jdbc; @ConfigurationProperties( prefix = ...

  10. springboot 配置DRUID数据源

    druid 是阿里开源的数据库连接池. 开发时整合   druid 数据源过程. 1.修改pom.xml <dependency> <groupId>mysql</gro ...

随机推荐

  1. MFC中CString.Format类详解

    在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CString的Format方法给我们进行字符串的 ...

  2. 入门ROS教程与视频汇总(kinetic)

    参考网址: Richard Wang    3 Shawn Chen 部分视频网址: http://v.youku.com/v_show/id_XMjUxMTc5MzE5Mg http://i.you ...

  3. kickstart配置LINUX无人值守选项--rootpw

    linux kickstart rootpw密码可以使用明文,也可以使用加密过的值(密码为:IPPBXADMINROOT) 注意:在这里要使用加密过的值,否则安全性就太低了 rootpw --iscr ...

  4. bzoj 4034(DFS序+线段树)

    这个题多了一个操作难度直线上升,看完题解才会写 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 ...

  5. MIT6.006Lec02:DocumentDistance

    MIT6.006是算法导论,Lec02讲的是Document Distance(文档距离),比如比较两个文档相似度或者搜索引擎中都会用到. 计算步骤为: 1.将每个文档分离为单词 2.统计词频 3.计 ...

  6. DDD领域模型企业级系统(二)

    用户层: 1.请求应用层获取用户显示的信息 2.发送命令给应用层要求执行某个命令 应用层: 对用户界面提供各种应用功能(包括信息获取与命令执行),应用层不包含业务逻辑,业务层是由应用层调用领域层(领域 ...

  7. mvn本地库导入jar包

    导入脚本  #!/bin/sh  mvn deploy:deploy-file -DgroupId=com.xxx.xxx -DartifactId=包名 -Dversion=4.0 -Dpackag ...

  8. hdu 3537 翻硬币 每次能翻1个 或2个 或3个

    N 枚硬币排成一排,有的正面朝上,有的反面朝上.我们从左开始对硬币按1 到N 编号. 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面. 第二,谁不能翻谁输. ...

  9. 非ROOT用户不能识别声卡问题

    将非ROOT用户加入到audio组中即可 sudo usermod -a -G audio usrname

  10. centos7 关闭默认firewalld,开启iptables

    编者按: 对于使用了centos6系列系统N年的运维来说,在使用centos7的时候难免会遇到各种不适应.比如防火墙问题.本文主要记录怎么关闭默认的firewalld防火墙,重新启用iptables. ...