Druid數據源配置入門


 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

 Druid的監控

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

github :  https://github.com/nbfujx/learn-java-demo/tree/master/Goku.Single.DruidDemo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM