原文链接:http://www.cnblogs.com/leechenxiang/p/5694397.html

原文链接:http://blog.sina.com.cn/s/blog_6813fb2401013nkw.html

原文链接:http://www.w2bc.com/article/139299

第一部分:数据源的集中比较。

目前常用的数据源主要有c3p0、dbcp、proxool、druid,先来说说他们
Spring 推荐使用dbcp;
Hibernate 推荐使用c3p0和proxool
1、 DBCP:apache
DBCP(DataBase connection pool)数据库连接池。是apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。

2、 C3P0:
C3P0是一个开源的jdbc连接池,它实现了数据源和jndi绑定,支持jdbc3规范和jdbc2的标准扩展。c3p0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。

3、 Proxool:Sourceforge
Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
综合来说,稳定性是dbcp>=c3p0>proxool

后来阿里巴巴的druid开源了,可以是前无古人后无来者,最强没有之一,是否的稳定,在大并发中表现十分好

今天来介绍的主要是监控,德鲁伊提供的这个监控组件,非常的便利,截图如下:

这是针对所有sql的监控,运行效率等等都能看到

对于url的监控,请求时间,并发等等,非常便利

当前数据源的配置信息也能够看到

监控session,这是我当前登录的

总的来说,这个数据源还是不错的,非常推荐,如今也已经到了1.0.23版本

<!-- 连接池 阿里巴巴数据源 全世界最牛逼的data source 没有之一 --><druid.version>1.0.23</druid.version><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency>

第二部分:详讲在普通项目中的配置。

文章简介

Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQLParser。Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQLServer、H2等等。 

Druid针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。 Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。

配置  
为了方便大家迁移,Druid的配置和DBCP是基本一致的,如果你原来是使用DBCP,迁移是十分方便的,只需要把corg.apache.commons.dbcp.BasicDataSource修改为om.alibaba.druid.pool.DruidDataSource就好了。 
<beanid="dataSource" class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"> 
<property name="url"value="${jdbc_url}" />
<property name="username"value="${jdbc_user}" />
<property name="password"value="${jdbc_password}" />
<property name="filters"value="stat" />
<property name="maxActive"value="20" />
<property name="initialSize"value="1" />
<property name="maxWait"value="60000" />
<property name="minIdle"value="1" />
<propertyname="timeBetweenEvictionRunsMillis" value="60000"/>
<propertyname="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery"value="SELECT 'x'" />
<property name="testWhileIdle"value="true" />
<property name="testOnBorrow"value="false" />
<property name="testOnReturn"value="false" />
<propertyname="poolPreparedStatements" value="true" />
<propertyname="maxPoolPreparedStatementPerConnectionSize" value="50"/>
</bean>

在上面的配置中,通常你需要配置url、username、password,maxActive这三项。

第三部分druid的使用

1:添加maven依赖

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.18</version>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.38</version>

</dependency>

2:添加一个资源配置文件(建议)

driver=com.mysql.jdbc.Driver

url=jdbc:mysql:///wangjian?characterEncoding=UTF-8&autoReconnect=true

username=root

password=1234

#最大连接数

maxActive=3

3:创建工厂类读取资源文件并创建javax.sql.DataSource的实例

需要先声明DruidDataSoure设置连接信息,其后再赋值给javax.sql.DataSource。完整代码如下:

Properties prop = new Properties();

prop.load(DSUtils.class.getResourceAsStream("pwd.properties"));

String driver = prop.getProperty("driver");

String url = prop.getProperty("url");

String username =prop.getProperty("username");

String password = prop.getProperty("password");

String maxActive = prop.getProperty("maxActive");

//声明DruidDataSource

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName(driver);

ds.setUrl(url);

ds.setUsername(username);

ds.setPassword(password);

ds.setMaxActive(Integer.parseInt(maxActive));

相信小伙伴位,在创建DruidDataSource以后,以然已经会使用了吧。哈哈~

4:对密码进行加密以后再保存到资源文件中并配置

由于在资源文件中,配置了数据库明文密码,为了保护密码,可以使用Druid数据源密码加密的功能。

4.1、首先对密码进行加密获取一个publickey和加密后的密码

执行以下命令:

C:/>java –cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools 密码

上面的命令中,蓝线部分为随机生成的publickey,每次随机。红线中的为生成的密码。

4.2、将publickey和密码配置到资源文件中

生成密码的命令:java -cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools e234

driver=com.mysql.jdbc.Driver

url=jdbc:mysql:///wangjian?characterEncoding=UTF-8&autoReconnect=true&useSSL=false

username=root

#经过加密以后的密码

password=XSY9axcew83ZVNeZUmgrOPXwP0d3ZziFmqal4IZPAAJ4mpnwbouWiUaqD…

#最大连接数

maxActive=3

#生成的公钥

publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANTxMV9TZYKpQCm7E+mEOhW0…

4.3、修改DruidDataSource实例化过程如下

主要是添加publickey和经过加密的密码,并指定过虑器:

//读取资源文件

Properties prop = new Properties();

prop.load(DSUtils.class.getResourceAsStream("pwd.properties"));

String driver = prop.getProperty("driver");

String url = prop.getProperty("url");

String username =prop.getProperty("username");

String password = prop.getProperty("password");

String maxActive = prop.getProperty("maxActive");

String publickey = prop.getProperty("publickey");

//声明DruidDataSource

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName(driver);

ds.setUrl(url);

ds.setUsername(username);

ds.setPassword(password);

ds.setMaxActive(Integer.parseInt(maxActive));

//config:使用ConfigFilter解密,Stat:启动监控功能StatFilter

ds.setFilters("config,stat");

//设置解密使用的publickey

ds.setConnectionProperties("config.decrypt=true;config.decrypt.key="+publickey);

5:配置监功能查看Druid数据源的监控信息

配置Druid用于监控的Servlet如下:

<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>

总结:

1:Druid数据源用维护连接对象是DruidDataSource 。

2:可以通过ConfigTools对用户的密码进行加密。

3:可以通过配置的方式,监控SQL执行。

阿里巴巴Druid数据源及使用相关推荐

  1. 阿里巴巴Druid数据源,史上最强的数据源,没有之一

    目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们 Spring 推荐使用dbcp: Hibernate 推荐使用c3p0和proxool 1. DBCP:apache ...

  2. springboot默认数据源如何设置连接数_spring boot基于DRUID数据源密码加密及数据源监控实现...

    项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...

  3. druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...

    项目源码路径:https://github.com/Syske/learning-dome-code.git 前言 随着需求和技术的日益革新,spring boot框架是越来越流行,也越来越多地出现在 ...

  4. Spring Boot之使用阿里巴巴Druid数据库连接池(数据源)

    作者:谭东 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容数据库,包括了Oracle.MySQL.PostgreSQL.SQL Server.H2等.D ...

  5. 阿里巴巴的druid数据源-监控

    20180315更新 druid-spring监控 原理,利用spring-aop特性,拦截指定包的方法,分析每个方法的执行时间等参数特性. spring-servlet.xml添加如下代码: < ...

  6. SpringBoot整合JDBC、整合Druid数据源详解教程

    目录 一.整合JDBC 1. 环境准备 1. 创建数据库 2. 创建SpringBoot项目 3. IDEA连接数据库 2. 编写数据库配置信息 3. 编写测试类测试 4. CRUD操作数据库 1. ...

  7. springboot配置Druid数据源

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

  8. 使用MyBatis集成阿里巴巴druid连接池(不使用spring)

    在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...

  9. boot druid 长时间不连接 异常_Spring Boot学习:如何使用Druid数据源

    Druid概述 Druid是阿里巴巴开源的一款非常优秀的数据库连接池.在Java应用程序开发中,常用的连接池还有DBCP.C3P0.Proxool等. SpringBoot2.X 版本开始默认的是Hi ...

最新文章

  1. ubuntu修改gcc版本
  2. 阿里巴巴技术专家三画:如何画好架构图
  3. Java编程技巧之单元测试用例编写流程
  4. 带着canvas去流浪系列之一:绘制柱状图
  5. html ie8上传图片,图片上传本地预览兼容ie8
  6. OpenLayers图层
  7. matlab sparse()
  8. Java编程:动态规划
  9. opencv3中camshift详解(二)camshift原理介绍
  10. 《上古卷轴5重制版》支线任务
  11. 著者四角号码查询_古籍检索史料检索.ppt
  12. 【文献学习】DeepReceiver: A Deep Learning-Based Intelligent Receiver for Wireless Communications in the Ph
  13. 网上百度的题目,随手写了一下
  14. 双控 嵌入式. linux,大华 DH-ESS6024S-F 专业SAN磁盘阵列 网络智能存储服务器
  15. oracle remap schema,oracle 10g DATA PUMP 的REMAP_SCHEMA和REMAP_TABLESPACE的功能
  16. 微信定时向好友发信息(循环发信息)
  17. Java体系十大组织
  18. 《安富莱嵌入式周报》第246期:2021.12.27--2022.01.02
  19. intel英特尔NUC主机bug大清除案例
  20. 【云栖大会】你拿到2016杭州·云栖大会的入场券了吗?

热门文章

  1. android手动创建数据表,Android开发—数据库应用—手动创建(SQLite)数据库--手动创建数据表(table)...
  2. 洛谷P2134 百日旅行
  3. HDU1869---(最短路+floyd)
  4. 网页打印物理大小尺寸的单位换算
  5. 【bzoj1036】 ZJOI2008—树的统计Count
  6. 使用ASP.Net WebAPI构建REST服务(四)——参数绑定
  7. 【TypeScript】TypeScript 学习 4——模块
  8. sharepoint webpart
  9. MySql与SqlServer的一些常用用法的差别
  10. python自动填日志_Selenium3+python自动化012+日志logging基本用法、高级用法