通过 XML 实现 DataSource(数据源)注入
这里介绍Spring提供的3种通过Xml实现DataSource(数据源)注入的方式:使用Spring 自带的DriverManagerDataSource、使用DBCP连接池和使用Tomcat提供的JNDI。下面分 别来进行介绍。
1使用Spring自带的DriverManagerDataSource 在第6章的例子中,所有示例的配置文档对于DataSource的注入,使用的都是Spring提供 的DriverManagerDataSource。使用DriverManagerDataSource的在效率上和直接使用Jdbc没 有多大的区别,使用DriverManagerDataSource的配置文档示例代码如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!—设定dataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </property> <property name="url"> <value>jdbc:microsoft:sqlserver://localhost:1433/stdb</value> <property name="name"> <value>admin</value> <property name="msg"> </bean> <!—设定transactionManager -->
<beanid="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref bean="dataSource"/> </bean> <bean id="helloDAO" class="com.gc.action.HelloDAO"> <property name="transactionManager"> <ref bean="transactionManager"/> </beans> 配置文档中id为helloDAO的Bean的示例代码在第6章已经讲解过,这里只是把示例代码 展示出来,以示过程的完整性。HelloDAO.java的示例代码如下: //******* HelloDAO.java************** package com.gc.action; import javax.sql.DataSource; import org.springframework.jdbc.core.*; import org.springframework.transaction.*; import org.springframework.transaction.support.*; import org.springframework.dao.*; public class HelloDAO { private DataSource dataSource; private PlatformTransactionManager transactionManager; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void setTransactionManager(PlatformTransactionManager transactionManager) { this.transactionManager = transactionManager; public int create(String msg) { TransactionTemplatetransactionTemplate=newTransactionTemplate(transactionManager); Object result = transactionTemplate.execute( new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { //执行新增的操作,向数据库新增一笔记录 ……. //返回值是resultObject return resultObject; }); 2使用DBCP连接池 Spring也提供了对DBCP连接池的支持,可以直接在配置文档中配置DBCP数据库连接池, 要在Spring中使用DBCP连接池,需要将spring-framework-2.0-m1/lib/jakarta-commons文件 夹中的commons-collections.jar、commons-dbcp.jar和commons-pool.jar用前面介绍的方法加 入到ClassPath中,使用DBCP连接池的示例代码如下: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!—使用sqlserver数据库--> <!—设定Url --> <!—设定用户名--> <!—设定密码--> class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> HelloDAO类的代码和上面的一样,不用改变,这里就不在展示了。 3使用Tomcat提供的JNDI 与使用DBCP连接池外相比,使用Spring来进行Web开发,更多的是使用Web容器提供的 数据库连接池功能,这里以使用Tomcat容器为例,来讲解一下在Spring中,使用Tomcat 提供的JNDI应该如何配置。首先要在Tomcat的server.xml中添加一下代码: <Context path="/myApp" reloadable="true" docBase="D:/eclipse/workspace/myApp" workDir="D:/eclipse/workspace/myApp/work" > <Resource name="jdbc/opendb" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url=" jdbc:microsoft:sqlserver://localhost:1433/stdb" name="admin" msg="admin" <!—设定最大连接数--> maxActive="10000" <!—连接最大空闲时间--> maxIdle="10000" <!—连接最大等待时间--> maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="10" logAbandoned="true" /></Context> 然后Spring的配置文档的示例代码如下: <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc/opendb</value> <ref bean="dataSource"/> 同样,HelloDAO的代码不用改变。 上面介绍的这3种实现DataSource注入的方式,给开发人员的的Jdbc编程带来了极大的方 便,主要是因为Spring对Jdbc进行了良好的封装。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |