最近在搭建springmvc框架的时候,用到阿里巴巴的druid数据源,记录下来仅供参考。
1.jndi配置
在spring里面做如下配置
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/demoDB</value>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
在tomcat的config目录下的context文件里面做如下配置(lib目录下要放置druid的jar文件,和数据库驱动jar包,我这里用到的是postgres)
<Resource
name="jdbc/demoDB"
factory="com.alibaba.druid.pool.DruidDataSourceFactory"
auth="Container"
type="javax.sql.DataSource"
maxActive="10"
maxWait="10000"
removeAbandoned="true"
logAbandoned="true"
removeAbandonedTimeout="1800"
TimeBetweenEvictionRunsMillis ="3000"
poolPreparedStatements="true"
maxPoolPreparedStatementPerConnectionSize="20"
filters="stat,mergeStat"
validationQuery="select 1"
testWhileIdle="true"
url="jdbc:postgresql://*.*.*.*:5432/flowlog?characterEncoding=UTF8"
username="postgres"
password="" />
2.普通数据源配置
spirng配置如下,项目中需要上面的两个jar包,加载properties文件
<bean name="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="0" />
连接池最大使用连接数量
<property name="maxActive" value="20" />
连接池最大空闲
<property name="maxIdle" value="20" />
连接池最小空闲
<property name="minIdle" value="0" />
获取连接最大等待时间
<property name="maxWait" value="60000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="33" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
<property name="timeBetweenEvictionRunsMillis" value="60000" />
配置一个连接在池中最小生存的时间,单位是毫秒
<property name="minEvictableIdleTimeMillis" value="25200000" />
打开removeAbandoned功能
<property name="removeAbandoned" value="true" />
1800秒,也就是30分钟
<property name="removeAbandonedTimeout" value="1800" />
关闭abanded连接时输出错误日志
<property name="logAbandoned" value="true" />
监控数据库
<property name="filters" value="stat" />
<property name="filters" value="mergeStat" />
</bean>
properties文件如下
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
driverClassName=org.postgresql.Driver
validationQuery=SELECT 1
jdbc_url=jdbc:postgresql://.......:5432/flowlog?characterEncoding=UTF8
jdbc_username=postgres
jdbc_password=