今天在启动项目的时候,偶然看到控制台跑出来一个警告:
10:03:46.091 [Thread-1] WARN c.m.v.resourcepool.BasicResourcePool - Bad pool size config, start 3 < min 10. Using 10 as start.
然后在Spring中c3p0的配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.userName}"/>
<property name="password" value="${jdbc.password}"/>
<property name="minPoolSize" value="10"></property>
<property name="maxPoolSize" value="30"></property>
<!-- 关闭事务的自动提交,对于事务自己来操作提交还是回滚 -->
<property name="autoCommitOnClose" value="false"></property>
<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout" value="2000"></property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="2"></property>
</bean>
一看,最少连接数为10,最大连接数为30,查了一下c3p0的默认初始化时候给的连接数为3,也是,你给人家定个最小为10,初始化却为3,好了在上述配置文件中添加一下初始化连接数的配置即可,数量介于最小和最大连接数:
<!-- 这个必须写在minPoolSize和maxPoolSize之间,表示初始化时获取的连接数,这个值一般设置为minPoolSize,缺省时默认为3 -->
<property name="initialPoolSize" value="10"></property>