Druid配置

来源:互联网 发布:nodejs 数组排序 编辑:程序博客网 时间:2024/05/16 04:29

Druid 有两种配置方法:一种是基于spring的配置,另一种是手动创建链接。

下面简述这两种方法。

一、Spring配置

把数据源改为以下配置:

[html] view plain copy
 print?
  1. <span style="white-space:pre">    </span><!--druid 配置数据源-->  
  2.     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
  3.         <property name="url" value="${jdbc.url}" />  
  4.         <property name="username" value="${jdbc.username}"/>  
  5.         <property name="password" value="${jdbc.password}"/>  
  6.         <property name="initialSize" value="1" /><!-- 配置初始化连接池数量-->  
  7.         <property name="minIdle" value="1" /><!-- 配置最小连接池数量-->  
  8.         <property name="maxActive" value="20" /><!-- 配置最大连接池数量-->  
  9.         <property name="maxWait" value="60000" /><!-- 配置获取连接等待超时的时间 单位毫秒-->  
  10.         <property name="useUnfairLock" value="true"/><!--使用非公平锁-->  
  11.         <property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  12.         <property name="minEvictableIdleTimeMillis" value="300000" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  13.         <property name="validationQuery" value="SELECT 'x'" /><!--用来检测连接是否有效的sql,要求是一个查询语句。-->  
  14.         <property name="testWhileIdle" value="true" /><!--申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->  
  15.         <property name="testOnBorrow" value="false" /><!--申请连接时执行validationQuery检测连接是否有效,-->  
  16.         <property name="testOnReturn" value="false" /><!--归还连接时执行validationQuery检测连接是否有效,-->  
  17.         <property name="poolPreparedStatements" value="true" /><!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  
  18.         <property name="maxOpenPreparedStatements" value="20" />  
  19.         <property name="filters" value="stat" /><!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->  
  20.     </bean>  


配置web.xml 开启Druid的内置监控页面

在web.xml中添加以下代码

[html] view plain copy
 print?
  1. <span style="white-space:pre">    </span><!--druid 监控页面-->  
  2.     <servlet>  
  3.         <servlet-name>DruidStatView</servlet-name>  
  4.         <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
  5.     </servlet>  
  6.     <servlet-mapping>  
  7.         <servlet-name>DruidStatView</servlet-name>  
  8.         <url-pattern>/druid/*</url-pattern>  
  9.     </servlet-mapping>  
  10.     <filter>  
  11.         <filter-name>DruidWebStatFilter</filter-name>  
  12.         <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>  
  13.         <init-param>  
  14.             <param-name>exclusions</param-name>  
  15.             <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>  
  16.         </init-param>  
  17.     </filter>  
  18.     <filter-mapping>  
  19.         <filter-name>DruidWebStatFilter</filter-name>  
  20.         <url-pattern>/*</url-pattern>  
  21.     </filter-mapping>  

配置完后,重启工程,访问监控页面:http://ip:port/projectName/druid/index.html


二、手动创建链接。

采用new DruidDataSource ()或者DruidDataSourceFactory .createDataSource(properties)的方式均可,前者需要手动设置参数值,后者自动从配置文件中读取,可根据需要使用。

[java] view plain copy
 print?
  1. package demo.test;  
  2.    
  3. import java.io.InputStream;  
  4. import java.sql.Connection;  
  5. import java.sql.SQLException;  
  6. import java.util.Properties;  
  7. import javax.sql.DataSource;  
  8. import com.alibaba.druid.pool.DruidDataSourceFactory;  
  9.    
  10. public class DBUtil {  
  11.     private static DataSource ds = null;    
  12.     static {  
  13.         try{  
  14.             InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("ds.properties");  
  15.             Properties props = new Properties();  
  16.             props.load(in);  
  17.             ds = DruidDataSourceFactory.createDataSource(props);  
  18.         }catch(Exception ex){  
  19.             ex.printStackTrace();  
  20.         }  
  21.     }   
  22.     public static Connection openConnection() throws SQLException{  
  23.         return ds.getConnection();  
  24.     }    
  25. }  

ds.properties

[plain] view plain copy
 print?
  1. driverClassName = com.mysql.jdbc.Driver  
  2. url = jdbc:mysql://localhost:3306/yuan_web  
  3. username = ******  
  4. password = ******  
  5.    
  6. initialSize = 5  
  7. maxActive = 10  
  8. minIdle = 3  
  9. maxWait = 60000  
  10. removeAbandoned = true  
  11. removeAbandonedTimeout = 180  
  12. timeBetweenEvictionRunsMillis = 60000  
  13. minEvictableIdleTimeMillis = 300000  
  14. validationQuery = SELECT 1 FROM DUAL  
  15. testWhileIdle = true   
  16. testOnBorrow = false  
  17. testOnReturn = false  
  18. poolPreparedStatements = true  
  19. maxPoolPreparedStatementPerConnectionSize = 50  
  20. filters = stat