dataSource定义数据源,本示例使用proxool数据库连接池,并使用LazyConnectionDataSourceProxy包装它,从而延迟获取数据库连接;${db.driver.class}将被“classpath:chapter7/resources.properties”中的“db.driver.class”元素属性值替换。
proxool数据库连接池:本示例使用proxool-0.9.1版本,请到proxool官网下载并添加proxool-0.9.1.jar和proxool-cglib.jar到类路径。
ProxoolDataSource属性含义如下:
- driver:指定数据库驱动;
- driverUrl:数据库连接;
- username:用户名;
- password:密码;
- maximumConnectionCount:连接池最大连接数量;
- minimumConnectionCount:连接池最小连接数量;
- statistics:连接池使用样本状况统计;如1m,15m,1h,1d表示没1分钟、15分钟、1小时及1天进行一次样本统计;
- simultaneousBuildThrottle:一次可以创建连接的最大数量;
- trace:true表示被执行的每个sql都将被记录(DEBUG级别时被打印到相应的日志文件);
如:用proxool
<bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<bean class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="alias" value="emergencyPool"></property><!--别名-->
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/><!--驱动-->
<property name="driverUrl" value="jdbc:oracle:thin:@${demo.db.url}"/><!--地址-->
<property name="delegateProperties" value="user=${demo.db.username},password=${demo.db.password}"/><!--用户密码-->
<property name="user" value=""/><!--无需填写但必须存在-->
<property name="password" value=""/><!--无需填写但必须存在-->
<property name="minimumConnectionCount" value="2"/><!--最小连接数 默认2-->
<property name="maximumConnectionCount" value="100"/><!--最大连接数 默认5-->
<property name="maximumActiveTime" value="1800000"/><!--检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程(毫秒)-->
<property name="houseKeepingSleepTime" value="10000"/><!--侦察(自动)到空闲的连接就马上回收,超时的销毁(毫秒) 默认30秒-->
<property name="prototypeCount" value="2"/><!--最少保持的空闲连接数 默认2-->
<property name="simultaneousBuildThrottle" value="10"/><!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
<property name="maximumConnectionLifetime" value="14400000"/><!--连接最大生命时间 默认4小时-->
<property name="houseKeepingTestSql" value="SELECT CURRENT_DATE FROM DUAL"/><!--用于保持连接的测试语句-->
</bean>
</property>
</bean>
或者:(用dbcp)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@${demo.db.url}</value>
</property>
<property name="username">
<value>${demo.db.username}</value>
</property>
<property name="password">
<value>${demo.db.password}</value>
</property>
</bean>