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 查询名称。