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

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

该项目在阿里巴巴内部获得了普遍的部署,在外部也有大量的用户群。为了使你们更好地了解和使用Druid在此作一些简单的介绍,以帮助你们快速入门。mysql

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

如下是本人链接mysql数据库测试的性能:(本人水平有限,仅作参考,不一样的数据库,不一样的环境可能存在较大差别)spring

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

数据源数据库

用时 msapp

C3p0框架

3630maven

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.一、首先对密码进行加密获取一个publickey和加密后的密码

执行如下命令:

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

 

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

 

4.二、将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.三、修改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执行。

相关文章
相关标签/搜索