无论使用何种DAO都需要配置数据源。Spring提供了一些配置数据源的方法,包括通过JDBC驱动,通过JNDI查询以及数据池连接等。下面分别介绍各种数据源配置的方法
·使用JNDI数据源
此种方法的好处在于他们可以独立应用程序之外进行配置。应用程序只有在需要访问数据库时才需要请求数据源。通常情况下,应用服务器中配置的数据源是以数据池的方式配置的,这样就可以让系统管理员很容易地进行配置。
在Spring中,我们可以配置一个数据源并将其保存在JNDI中,而且可以像JavaBean一样进行使用。这里有个JndiObjectFactoryBean类,它负责从JNDI中获取数据源。
<bean id=”dataSource” class=”org.springframework.jndi.JndiObjectFactoryBean” scope=”singleton”>
<property name=”jndiName” value=”/jdbc/RantzDatasource” />
<property name=”resoureceRef” value=”true” />
</bean>
jndiName的属性被用于指定JNDI中的资源名称。只有属性被设置了之后才可以开始查询数据源。如果应用程序是跑在一个Java应用程序中的话,你需要将resourceRef属性设置为true。resourceRef属性为true时,jndiName的值将会是以java:comp/env/开头的。例如:java:comp/env/jdbc/RantzDatasource。
·Spring2.0中的JNDI数据源
Spring2.0使用jee命名空间极大地简化了获取数据源xml的编写,例如,
<bean xmlns=http://www.springframework.org/schema/beans
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:jee=http://www.springframework.org/schema/jee
xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.0.xsd”>
jee命名空间提供了<jee:jndi-lookup>元素来从JNDI元素获取对象。下面的XML代码和前面JndiObjectFactoryBean是等价的:
<jee:jndi-lookup id=”dataSource” jndi-name=”/jdbc/RantzDatasource”
resource-ref=”true” />
jndi-name和resource-ref属性对应于JndiObjectFactoryBean中的jndiName和resourceRef属性。
·使用数据源池
Spring本身不提供一个数据源池。DBCP(DataBase Connection Pools)是一个可用的数据源池。将DBCP加到你的应用程序中有两种方式:1. 将DBCP的jar包加到你的build path中;2. 在Maven2的pom.xml中加入下面代码:
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.1</version>
</dependency>
DBCP包含了一些具有pooling的数据源,而BasicDataSource是最常被用到的,下面给出一个实例:
<bean id=”dataSource”
class=”org.apache.commons.dbcp.BasicDataSource”>
<property name=”driverClassName” value=”org.hsqldb.jdbcDriver” />
<property name=”url”
value=”jdbc:hsqldb:hsql://localhost/roadrantz/roadrantz” />
<property name=”username” value=”sa” />
<property name=”password” value=”sa” />
<property name=”initialSize” value=”5” />
<property name=”maxActive” value=”10” />
</bean>
·基于JDBC驱动的数据源
通过一个JDBC驱动配置数据域在Spring中是最简单的。在Spring的org.spring.framework.jdbc.datasource包中有两个类你可以使用:DriverManagerDataSource类和SingleConnectionDataSource类。配置方法和DBCP类似:
<bean id=”dataSource”
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=”driverClassName” value=”org.hsqldb.jdbcDriver” />
<property name=”url”
value=”jdbc:hsqldb:hsql://localhost/roadrantz/roadrantz” />
<property name=”username” value=”sa” />
<property name=”password” value=”sa” />
</bean>
上面的代码与DBCP的区别在于它们没有任何数据源池的配置属性。另外,SingleConnectionDataSource只提供一个数据源,所以并不能适用在多线程的应用中,即使DriverManagerDataSource支持多线程,但它总是一次请求创建一个新的连接,这样会影响性能。因此,还是建议适用pooled的数据源。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/amethystic/archive/2009/03/09/3973280.aspx
分享到:
相关推荐
spring数据源配置
阐述spring的数据源配置
Spring配置数据源的三种方式,非常详细!
Spring多数据源配置,支持mysql、oracle等多个数据源同时存在的情况
spring 动态多数据源配置代码,本项目是maven项目,里面有完成的配资好的spring多数据源代码和配置文件。
NULL 博文链接:https://jiang5495.iteye.com/blog/688326
SSM(Spring+SpringMVC+MyBatis)多数据源配置框架,精简版
一个springboot的多数据配置,从mapper到controller完整的一个业务流程
springboot多数据源配置
Spring Boot+Jpa多数据源配置Demo,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate
spring 配置多数据源
基于注解的Spring多数据源配置和使用 前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备。由于之前做过的项目都是单数据源的,没有遇到这种场景,...
通过简单的demo实现SpingBoot多数据源配置并动态切换多数据源
spring配置JNDI数据源
Spring多数据源配置_分布式数据 Tomcat服务器下的多数据源配置详情 一、环境及框架 Tomcat+spring+hibernate+jotm,还有就是struts、Oracle等 二、需求说明 系统里有2套不同网域的oracle数据库,之间的数据需要进行...
IOC容器数据源配置 <!-- 配置数据源 --> destroy-method="close"> <value>org.gjt.mm.mysql.Driver <value>jdbc:mysql://localhost:3306/demo <value>root <value>root ...
Spring Boot使用spring-data-jpa配置Mysql多数据源,可用版本
NULL 博文链接:https://cuics-100.iteye.com/blog/662102
如何在spring中等价配置得到原本由jndi配置实现的数据源? 现在的问题是:由于各种原因,当不想使用jndi方式,如何等价的在spring工程内部实现配置?