阿里巴巴Druid数据源的配置与使用

Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。 

该项目在阿里巴巴内部得到了广泛的部署,在外部也有大量的用户群。为了使大家更好地了解和使用Druid在此做一些简单的介绍,以帮助大家快速入门。

目前比较流行的数据源还有:c3p0,dbcp,proxool,BoneCP等。其中spring,hibernate都默认推荐使用c3p0,Tomcat默认使用dbcp。

以下是本人连接mysql数据库测试的性能:(本人水平有限,仅做参考,不同的数据库,不同的环境可能存在较大差异)

连续操作1000次数据库写入操作的用时比较:

数据源

用时 ms

C3p0

3630

proxool

3240

druid

3190

dbcp

3264

   根据分析,druid性能超过其他数据源,但在多次运行过程是druid、proxool出现崩溃两次。C3p0和dbcp在相对比较稳定。其中c3p0有自动回收连接功能,而dbcp没有自动回收连接的功能。

 

 

好了,废话少说,下面快速给大家使用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执行。

 

转载于:https://my.oschina.net/wjme/blog/678927

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值