通过 XML 实现 DataSource(数据源)注入

前端之家收集整理的这篇文章主要介绍了通过 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>

配置文档中idhelloDAOBean的示例代码在第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.jarcommons-dbcp.jarcommons-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应该如何配置。首先要在Tomcatserver.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编程带来了极大的方

便,主要是因为SpringJdbc进行了良好的封装。

猜你在找的XML相关文章