Druid是什么
Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
同时Druid不仅仅是一个数据库连接池,它包括四个部分:
Druid是一个JDBC组件,它包括三个部分:
基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParser
Druid的功能
1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
Druid的使用
环境说明:
开发工具:intellij idea
JDK版本:1.8
项目:Spring+SpringMvc+Mybatis+Maven+MySQL
使用步骤:
1.配置Maven
1 <!-- mybatis框架包 start -->
2 <dependency>
3 <groupId>org.mybatis</groupId>
4 <artifactId>mybatis</artifactId>
5 <version>3.2.8</version>
6 </dependency>
7 <dependency>
8 <groupId>org.mybatis</groupId>
9 <artifactId>mybatis-spring</artifactId>
10 <version>1.2.2</version>
11 </dependency>
12 <!-- mybatis框架包 end -->
13 <!-- 数据库驱动 -->
14 <dependency>
15 <groupId>mysql</groupId>
16 <artifactId>mysql-connector-java</artifactId>
17 <version>5.1.35</version>
18 </dependency>
19 <!-- 导入druid的jar包-->
20 <dependency>
21 <groupId>com.alibaba</groupId>
22 <artifactId>druid</artifactId>
23 <version>1.0.27</version>
24 </dependency>
View Code
2、配置属性文件:mybatis.properties (DataSource连接参数)
1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://10.1.51.235:3306/jawavesys
3 username=root
4 password=jawave88
5 #定义初始连接数
6 initialSize=0
7 #定义最大连接数
8 maxActive=20
9 #定义最大空闲
10 maxIdle=20
11 #定义最小空闲
12 minIdle=1
13 #定义最长等待时间
14 maxWait=60000
3.SPRING配置文件:spring-base.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
6 http://www.springframework.org/schema/tx
7 http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
8
9 <!-- 引入配置文件 -->
10 <bean id="propertyConfigurer"
11 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
12 <property name="location" value="classpath:mybatis.properties" />
13 </bean>
14
15 <!--druid的配置-->
16 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
17 init-method="init" destroy-method="close">
18 <property name="driverClassName" value="${driver}" />
19 <property name="url" value="${url}" />
20 <property name="username" value="${username}" />
21 <property name="password" value="${password}" />
22 <!-- 初始化连接大小 -->
23 <property name="initialSize" value="${initialSize}"></property>
24 <!-- 连接池最大数量 -->
25 <property name="maxActive" value="${maxActive}"></property>
26 <!-- 连接池最大空闲 -->
27 <property name="maxIdle" value="${maxIdle}"></property>
28 <!-- 连接池最小空闲 -->
29 <property name="minIdle" value="${minIdle}"></property>
30 <!-- 获取连接最大等待时间 -->
31 <property name="maxWait" value="${maxWait}"></property>
32 <!-- 这里配置提交方式,默认就是TRUE,可以不用配置 -->
33 <property name="defaultAutoCommit" value="true" />
34 <!-- 验证连接有效与否的SQL,不同的数据配置不同 -->
35 <property name="validationQuery" value="select 1 " />
36 <!--通过别名的方式配置扩展插件,监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall-->
37 <property name="filters" value="stat,log4j" />
38 <property name="proxyFilters">
39 <list>
40 <ref bean="stat-filter" />
41 <ref bean="log-filter"/>
42 </list>
43 </property>
44 </bean>
45
46 <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
47 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
48 <property name="dataSource" ref="dataSource" />
49 <!-- 自动扫描mapping.xml文件 -->
50 <property name="mapperLocations" value="classpath:mapping/**/*.xml"></property>
51 </bean>
52
53 <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
54 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
55 <property name="basePackage" value="com.goku.druid.demo.mapper" />
56 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
57 </bean>
58
59 <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
60 <bean id="transactionManager"
61 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
62 <property name="dataSource" ref="dataSource" />
63 </bean>
64
65 <!-- 使用annotation定义事务 -->
66 <tx:annotation-driven transaction-manager="transactionManager"
67 proxy-target-class="true" />
68
69 <!--监控统计-->
70 <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
71 <property name="slowSqlMillis" value="10000" />
72 <property name="logSlowSql" value="true" />
73 </bean>
74
75 <!--日志-->
76 <bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
77 <property name="statementExecutableSqlLogEnable" value="true" />
78 </bean>
79
80 </beans>
View Code
的监控
1.在web.xml里面添加如下配置,用于druid的监控
1 <servlet>
2 <servlet-name>DruidStatView</servlet-name>
3 <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
4 </servlet>
5 <servlet-mapping>
6 <servlet-name>DruidStatView</servlet-name>
7 <url-pattern>/druid/*</url-pattern>
8 </servlet-mapping>
2.运行程序 打开 http://localhost:8090/druid/index.html 查看运行情况: