Apache的数据库连接池 DBCP的常用配置说明,因为项目中用到了需要对其封装,所以必须先了解怎么配置以及各个配置字段的含义,理解的基础上开发我们自己的数据库连接池。可以参考官网dbcp官网。
dbcp的配置在下面的配置文件详细介绍
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!--驱动的名称我用的mysql 所以配置的mysql的驱动名称 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!--数据库用户名名称 -->
<property name="username" value="root" />
<!--数据库的密码 我本地的密码空 所以不用配置 -->
<property name="password" value="" />
<!-- 数据库连接池启动时创建的连接数量 我设置的是10个-->
<property name="initialSize" value="10" />
<!-- 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。 -->
<property name="maxIdle" value="5" />
<!-- 在不新建连接的条件下,池中保持空闲的最少连接数。 -->
<property name="minIdle" value="5" />
<!--同一时间可以从池分配的最多连接数量。设置为0时表示无限制。 -->
<property name="maxActive" value="10" />
<!-- -->
<property name="removeAbandoned" value="true" />
<!-- 自动回收超时时间(以秒数为单位) -->
<property name="removeAbandonedTimeout" value="180" />
<!--超时等待时间以毫秒为单位-->
<property name="maxWait" value="3000" />
<!-- 默认的SQL语句自动提交状态(开启或关闭)设置由连接池本身设置(false由连接池定),不设置该值setAutoCommit方法不被调用; -->
<property name="defaultAutoCommit" value="false" />
<!--要求必需是个SELECT类型的SQL语句,至少返回一行,由于它会在所有应用的SQL语句执行之前运行一次,
所以原则上应该对数据库服务器带来的压力越小越好,推荐使用“SELECT 1” -->
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<!-- 表示从连接池中获取连接前是否运行validationQuery,true=运行[默认],false=不运行 -->
<property name="testOnBorrow">
<value>true</value>
</property>
<!--表示将连接归还连接池前是否运行validationQuery,true=运行,false=不运行[默认]; -->
<property name="testOnReturn">
<value>false</value>
</property>
</bean>
自定义解析xmld对应的配置xml信息。
<?xml version="1.0" encoding="UTF-8"?>
<da2s-configuration>
<DefaultConnectionPool>3000</DefaultConnectionPool>
<connectionPool name="3000">
<dbtype>MYSQL</dbtype>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<url>jdbc:mysql://localhost:3306/springok</url>
<username>root</username>
<password></password>
<datasourceProperty>
<defaultAutoCommit>false</defaultAutoCommit>
<initialSize>10</initialSize>
<maxActive>10</maxActive>
<maxIdle>5</maxIdle>
<minIdle>5</minIdle>
<maxWait>3000</maxWait>
<validationQuery>select 1</validationQuery>
<testOnBorrow>true</testOnBorrow>
<removeAbandoned>true</removeAbandoned>
<removeAbandonedTimeout>180</removeAbandonedTimeout>
<logAbandoned>true</logAbandoned>
</datasourceProperty>
</connectionPool>
<connectionPool name="5000">
<dbtype>MYSQL</dbtype>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<url>jdbc:mysql://localhost:3306/springok</url>
<username>root</username>
<password></password>
<datasourceProperty>
<defaultAutoCommit>false</defaultAutoCommit>
<initialSize>10</initialSize>
<maxActive>10</maxActive>
<maxIdle>5</maxIdle>
<minIdle>5</minIdle>
<maxWait>3000</maxWait>
<validationQuery>select 1</validationQuery>
<testOnBorrow>true</testOnBorrow>
<removeAbandoned>true</removeAbandoned>
<removeAbandonedTimeout>180</removeAbandonedTimeout>
<logAbandoned>true</logAbandoned>
</datasourceProperty>
</connectionPool>
</da2s-configuration>
思考的起点:
- xml如何读取比较方便。
- xml如何应该新需求变化xml结构变化。
- 读取后的xml内容如何封装。
- 程序如何能够访问conn 如何封装。
- 客户端如何能很容易的调用开发的功能。
xml解析使用Apache Commons Configuration框架具体使用参考xml解析(common configuratin使用)。下一章节我们设计如何封装一个数据库连接池和解析的具体方法。