Druid 有两种配置方法:一种是基于spring的配置,另一种是手动创建链接。
下面简述这两种方法。
一、Spring配置
把数据源改为以下配置:
- <span style="white-space:pre"> </span><!--druid 配置数据源-->
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- <property name="initialSize" value="1" /><!-- 配置初始化连接池数量-->
- <property name="minIdle" value="1" /><!-- 配置最小连接池数量-->
- <property name="maxActive" value="20" /><!-- 配置最大连接池数量-->
- <property name="maxWait" value="60000" /><!-- 配置获取连接等待超时的时间 单位毫秒-->
- <property name="useUnfairLock" value="true"/><!--使用非公平锁-->
- <property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
- <property name="minEvictableIdleTimeMillis" value="300000" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
- <property name="validationQuery" value="SELECT 'x'" /><!--用来检测连接是否有效的sql,要求是一个查询语句。-->
- <property name="testWhileIdle" value="true" /><!--申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->
- <property name="testOnBorrow" value="false" /><!--申请连接时执行validationQuery检测连接是否有效,-->
- <property name="testOnReturn" value="false" /><!--归还连接时执行validationQuery检测连接是否有效,-->
- <property name="poolPreparedStatements" value="true" /><!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
- <property name="maxOpenPreparedStatements" value="20" />
- <property name="filters" value="stat" /><!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
- </bean>
配置web.xml 开启Druid的内置监控页面
在web.xml中添加以下代码
- <span style="white-space:pre"> </span><!--druid 监控页面-->
- <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>
- <filter>
- <filter-name>DruidWebStatFilter</filter-name>
- <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
- <init-param>
- <param-name>exclusions</param-name>
- <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>DruidWebStatFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
配置完后,重启工程,访问监控页面:http://ip:port/projectName/druid/index.html
二、手动创建链接。
采用new DruidDataSource ()或者DruidDataSourceFactory .createDataSource(properties)的方式均可,前者需要手动设置参数值,后者自动从配置文件中读取,可根据需要使用。
- package demo.test;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.Properties;
- import javax.sql.DataSource;
- import com.alibaba.druid.pool.DruidDataSourceFactory;
- public class DBUtil {
- private static DataSource ds = null;
- static {
- try{
- InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("ds.properties");
- Properties props = new Properties();
- props.load(in);
- ds = DruidDataSourceFactory.createDataSource(props);
- }catch(Exception ex){
- ex.printStackTrace();
- }
- }
- public static Connection openConnection() throws SQLException{
- return ds.getConnection();
- }
- }
ds.properties
- driverClassName = com.mysql.jdbc.Driver
- url = jdbc:mysql://localhost:3306/yuan_web
- username = ******
- password = ******
- initialSize = 5
- maxActive = 10
- minIdle = 3
- maxWait = 60000
- removeAbandoned = true
- removeAbandonedTimeout = 180
- timeBetweenEvictionRunsMillis = 60000
- minEvictableIdleTimeMillis = 300000
- validationQuery = SELECT 1 FROM DUAL
- testWhileIdle = true
- testOnBorrow = false
- testOnReturn = false
- poolPreparedStatements = true
- maxPoolPreparedStatementPerConnectionSize = 50
- filters = stat