(转)阿里巴巴Druid数据源及使用
原文链接:https://blog.csdn.net/yanguo110/article/details/68944659
第一部分:数据源的集中比较。
目前常用的数据源主要有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针对Oracle和MySql做了特别优化,比如Oracle的PSCache内存占用优化,MySql的ping检测优化。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。
在上面的配置中,通常你需要配置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数据源及使用的更多相关文章
- 阿里巴巴Druid数据源,史上最强的数据源,没有之一
目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们Spring 推荐使用dbcp:Hibernate 推荐使用c3p0和proxool1. DBCP:apacheDBC ...
- 阿里巴巴Druid数据源组件
目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们Spring 推荐使用dbcp:Hibernate 推荐使用c3p0和proxool1. DBCP:apacheDBC ...
- spring boot基于DRUID数据源密码加密及数据源监控实现
前言 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效 ...
- 使用MyBatis集成阿里巴巴druid连接池(不使用spring)
在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误.因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接). mybatis更多数据源参考博客链接 . ...
- springboot配置Druid数据源
springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...
- 【2.0】SpringBoot2配置Druid数据源及监控
什么是Druid? Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目.Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池, ...
- spring boot:配置shardingsphere(sharding jdbc)使用druid数据源(druid 1.1.23 / sharding-jdbc 4.1.1 / mybatis / spring boot 2.3.3)
一,为什么要使用druid数据源? 1,druid的优点 Druid是阿里巴巴开发的号称为监控而生的数据库连接池 它的优点包括: 可以监控数据库访问性能 SQL执行日志 SQL防火墙 但spring ...
- SpringBoot数据访问之Druid数据源的使用
数据访问之Druid数据源的使用 说明:该数据源Druid,使用自定义方式实现,后面文章使用start启动器实现,学习思路为主. 为什么要使用数据源: 数据源是提高数据库连接性能的常规手段,数据源 ...
- druid 数据源 使用属性文件的一个坑
直接上代码: <bean id="propertiesFactoryBean" class="org.springframework.beans.factory.c ...
随机推荐
- Git 基本知识与常用指令
一.Git代码状态转换图 其中: 未被Git跟踪的状态为unstage状态: 已被Git跟踪的状态为stage状态(stage:阶段),因此包括staging状态和staged状态. untrack ...
- greenplum导数据
Greenplum and Hadoop HDFS integration Step 1: Install Java on greenplum Step 2: Set JAVA and HADOOP ...
- java:网络通讯
网络标准模型:开放式系统模型OSI https://www.cnblogs.com/lydit/articles/4499928.html 理解Scoket通讯:https://www.cnblogs ...
- 收缩事务日志(sqlserver)
sqlserver数据库的日志文件其实是由很多个逻辑上的日志文件组成,我们可以通过命令看一下数据库日志文件 可以看到的是sqlserver数据库日志文件是由很多文件组成的,当数据库日志文件已满的时候 ...
- CSS中的EM属性之弹性布局
这篇教程将引导大家如何使用“em”来创建一个基本的弹性布局,从而学习其如何计算?又是如何使用“em”对层进行弹性扩展?又是如何扩展文本和图像等内容?下在我们就一起带着这些问题开始今天的“em”之行. ...
- JS教程之实现加载图片时百分比进度
思路:思路其实很简单,ajax执行时,会生成一个event对象,其中会包含要加载的文件的大小和当前已经加载完成部分的大小,通过这两个值即可计算出百分比 事件介绍onprogress 当浏览器正在加载媒 ...
- 用AutoHotkey重置Excel的Ctrl+Alt+方向键选择的范围
当前选择是蓝色单元格,原来的Ctrl+Alt+方向键,是选中[蓝色]到[红色]单元格的区域, 经过脚本修改后,则是[蓝色]到[黄色]的区域,应该更符合日常使用, 特别是表格比较大的时候,一直按住鼠标滚 ...
- LeetCodeOJ刷题之14【Longest Common Prefix】
Longest Common Prefix Write a function to find the longest common prefix string amongst an array of ...
- Eclipse Java常用快捷键(Eclipse Shortcut Keys for Java Top10)(转)
Eclipse Java常用快捷键(Eclipse Shortcut Keys for Java Top10) 0.背景Eclipse作为Java的OpenSource开发IDE,已经是开发人员进行J ...
- App版本号定义与说明基础知识
版本控制比较普遍的三种命名格式 GNU 风格的版本号命名格式 主版本号 . 次版本号 [. 修正版本号 [. 编译版本号 ]] 示例 : 1.2.1, 2.0, 5.0.0 build-13124 W ...