Druid首先是一個數據庫鏈接池。Druid是目前最好的數據庫鏈接池,在功能、性能、擴展性方面,都超過其餘數據庫鏈接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,通過一年多生產環境大規模部署的嚴苛考驗。html
同時Druid不單單是一個數據庫鏈接池,它包括四個部分:java
Druid是一個JDBC組件,它包括三個部分:mysql
基於Filter-Chain模式的插件體系。git
DruidDataSource 高效可管理的數據庫鏈接池。github
SQLParserweb
一、替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫鏈接池。spring
二、能夠監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,可以詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。sql
三、數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是很差的行爲,容易致使安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。數據庫
四、SQL執行日誌,Druid提供了不一樣的LogFilter,可以支持Common-Logging、Log4j和JdkLog,你能夠按須要選擇相應的LogFilter,監控你應用的數據庫訪問狀況。編程
五、擴展JDBC,若是你要對JDBC層有編程的需求,能夠經過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。
環境說明:
開發工具: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>
二、配置屬性文件: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>
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 查看運行狀況:
github : https://github.com/nbfujx/learn-java-demo/tree/master/Goku.Single.DruidDemo