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配置数据链接:
<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>
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///wangjian?characterEncoding=UTF-8&autoReconnect=true
username=root
password=1234
#最大链接数
maxActive=3
须要先声明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之后,以然已经会使用了吧。哈哈~
因为在资源文件中,配置了数据库明文密码,为了保护密码,可使用Druid数据源密码加密的功能。
执行如下命令:
C:/>java –cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools 密码
上面的命令中,蓝线部分为随机生成的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…
主要是添加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);
配置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执行。