通过 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进行了良好的封装。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇