ITEEDU

DataSource  置换

DriverManagerDataSource 并没有提供连接池的功能,,只能作作简单的单机连接测试,实际上并 不能使用于真正的专案之中,您可以使用DBCP以获得连接池的功能,如果您使用 Spring,则置 换 DataSource 并不需要 修 改程式原 始 码,只要 修 改 Bean 定义 档就可以 了 ,例如修 改 一 下 DataSource 注入 中的beans‐config.xml如下:

•      beans‐config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:mysql://localhost:3306/demo</value>
		</property>
		<property name="username">
			<value>caterpillar</value>
		</property>
		<property name="password">
			<value>123456</value>
		</property>
	</bean>
	<bean id="userDAO" class="onlyfun.caterpillar.UserDAO">
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
	</bean>
</beans>

现在所使用的是 org.apache.commons.dbcp.BasicDataSource 作为注入的 DataSource 实例,为了使 用 DBCP  的功能,您需要在 Classpath  路径中设定 commons‐dbcp.jar 、commons‐pool.jar  与 commons‐ collections.jar,这些都可以在 Spring 的相依版本中的 lib 目录下找到。

注意到在 dataSource 上设定了"destroy‐method"属性,如此可以确保 BeanFactory 在关闭时也一并 关闭 BasicDataSource。 如果您的 Servlet 容器提供了 JNDI(Java Naming and Directory Interface)的 DataSource,您也可以 简单的换上这个 DataSource:

...
<bean id="dataSource" class="org.springframework.indi.JndiObjectFactoryBean">
	<property name="jndiName">
		<value>jdbc/demo</value>
	</property>
</bean>
...

为了使用 org.springframework.indi.JndiObjectFactoryBean,您需要 spring‐context.jar,"jndiName" 实际上要根据您所设定的 JNDI 查询名称。