`

Spring 数据源不同配置

阅读更多

  数据库的使用,我想几乎任何的Java EE系统都会把持久化数据保存到数据中,但是,不管通过何种持久化技术以及何种数据库,首先第一步,我们都必须拥有数据库的连接,数据库的连接,我们有使用JDBC连接的,而且手动的在程序中连接并关闭释放数据库连接资源,还有呢,就是通过Web应用报务器提供数据源,即JNDI(Java Naming and Directory Interface),在spring中,配置数据源通过有三种方式:JNDI数据源、数据源连接池、JDBC驱动的数据源。现一一介绍:

一、JNDI数据源

    1、tomcat JNDI数据源配置

      在介绍Spring获取JNDI数据源的方法之前,先来看看tomcat里如何配置JNDI数据源的。具体实现的步骤,我们以tomcat下的文档说明,比如,我的tomcat安装在G:/apache-tomcat-6.0.26,以下统称为<TOMCAT_HOME>。那么文档说明则在<TOMCAT_HOME>/webapps/docs/jndi-datasource-examples-howto.html这个文件里,我想大家都是聪明人,这几个破单词我想大家还是应该了解认识的,不知道?金山词霸(我就这么做的,呵呵)。跟着文档一步一步的走,还是相当的简单的,在此我也就不浪费“笔墨”了,只是把其中几个注意点说明一下:

     1)JNDI数据源的配置在<TOMCAT_HOME>/conf/context.xml文件下,现粘贴配置代码如下:

<Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true"> 
       <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" 
            maxIdle="30" maxWait="10000"  username="root" password="root" 
            driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest"/> 
</Context>

         path与docBase必须与我们自己web项目工程的URL名称一致;必须加数据库连接jar包到<TOMCAT_HOME>/lib目录下。

      2)在我们自己web工程下的web.xml文件中,加上JNDI资源的引用配置:

        

<description>MySQL Test App</description> 
<resource-ref> 
  <description>DB Connection</description> 
  <res-ref-name>jdbc/TestDB</res-ref-name> 
  <res-type>javax.sql.DataSource</res-type> 
  <res-auth>Container</res-auth> 
</resource-ref> 

  

        其中,res-ref-name的配置名称必须与1)点中Resource的name属性名字一致。  

     3)除了文档中说明的使用JSTL标签连接资源外,还可以使用如下方式获取数据库连接:     

        

Context initCtx = new InitialContext(); 
DataSource source = (DataSource)initCtx.lookup("java:comp/env/jdbc/TestDB"); 
Connection con = source.getConnection();

 

        加在JNDI数据源名称之前的java:comp/env/是环境命名上下文(environment naming context(ENC))

  具体的实现,见附件DBTest.rar。

        2、Spring JNDI数据源配置

       使用Spring配置JNDI数据源就有些简单了,实际上它就是替代了说明的第3)点,Spring有专门提供引用JNDI资源的org.springframework.jndi.JndiObjectFactoryBean类,具体的配置如下:

       

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
   <property name="jndiName" value="jdbc/TestDB"/> 
   <property name="resourceRef" value="true"/> 
</bean> 

 

        属性jndiName用于指定JNDI里数据源的名称。如果只设置了jndiName属性,数据源就是由它直接指定的。但是呢,上面,我们是在tomcat服务器里配置的数据源,所以呢,把resourceRef属性设置为true,jndiName会被添加java:comp/env/这个前缀。

       Spring2.X为了获取Java EE资源,提供了一个jee命名空间,通过它我们可以大大简化Java EE资源的引用,要运用jee命名空间,首先在spring的配置文件里引入如下加粗的三行: 

      

<beans  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:jndi-lookup id="datasource" jndi-name="jdbc/TestDB" resource-ref="true">
</jee:jndi-lookup> 

 

      它有一个resource-ref属性,与上面的resourceRef意义相同。

     至此,JNDI的数据源配置方式介绍完了,下面来介绍Spring配置借助于第三方的数据源连接池。

二、数据源连接池

    Spring依赖的第三方包中包含了两个数据源的实现类包,一个是Apache下的开源项目DBCP,别一个则是同样开放源码并且可用配置属性异常丰富的C3P0。

     1、DBCP数据源

        要使用DBCP作为Spring的数据源实现,需要在类路径下加入如下两个jar包:commons-dbcp.jar和commons-pool.jar,这两个包都已位于<SPRING_HOME>\lib\jakarta-commons包下。使用DBCP的MySql数据源配置如下:     

     

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
	<property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
	<property name="url" value="jdbc:mysql://localhost:3306/TestDB"/> 
	<property name="username" value="root"/> 
	<property name="password" value="root"/> 
	<!-- 其它配置省略,可根据自己的需要配置--> 
</bean> 

 

       BasicDataSource提供了close()方法关闭数据源,所以呢,必须设置destroy-method="close",以便Spring容器关闭时,数据源能够同时关闭。

         除了以上所提供的数据源连接的必需属性外,DBCP还有其它一些很有用的属性,比如defaultAutoCommit、defaultReadOnly、maxActive、maxIdle等等。

       2、C3P0数据源

           C3P0所依赖的jar包,位于<SPRING_HOME>\lib\c3p0包下,具体配置如下:  

          

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
	<property name="driverClass" value="com.mysql.jdbc.Driver"/> 
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/TestDB"/> 
	<property name="user" value="root"/> 
	<property name="password" value="root"/> 
	<!-- 其它配置省略,可根据自己的需要配置--> 
</bean> 

 

 

          ComboPooledDataSource同样提供了关闭数据源的close()方法,但它比DBCP拥有更多的配置属性,在此不多做介绍,对它不是很熟。

三、JDBC驱动的数据源

     DriverManagerDataSource、SingleConnectionDataSource,Spring提供的两种简单的数据源实现。数据源的配置与DBCP、C3P0大同小异,故在此一略而过。

   实现上,这两种方式用得都不是很多,因为他们有着很明显的缺陷,对数据源都没有进行池化。

   好了,打得我累死了,以便以后继续学习使用,收工!

       

       

 

 

 

 

 

  

       

 

分享到:
评论

相关推荐

    spring数据源配置

    ### Spring 数据源配置详解 #### 一、Spring与数据源简介 在Java企业级应用开发中,数据库操作是必不可少的一部分。Spring框架作为一种流行的轻量级Java应用开发框架,提供了强大的数据库访问支持,其中包括对数据...

    spring 动态多数据源配置代码

    下面将详细介绍Spring动态多数据源配置的相关知识点。 1. **为什么要使用多数据源**: 在实际项目中,可能需要连接到不同的数据库,例如,一个用于存储主业务数据,另一个用于日志记录或数据分析。通过多数据源...

    spring数据源配置解析

    阐述spring的数据源配置

    spring boot多数据源配置

    在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们同时管理多个数据库,比如主库和从库,或者不同类型的数据库。本教程将详细阐述如何在Spring Boot项目中实现这一功能,从数据源配置、实体管理到...

    spring多数据源

    通过以上步骤,我们可以成功地在Spring应用中实现多数据源配置,灵活地管理和切换不同的数据库。这在大型分布式系统中尤其有用,能帮助我们构建更加健壮、高效的数据库访问架构。在实际项目中,还可以结合Spring ...

    Spring Boot+Jpa多数据源配置Demo(支持不同数据库)

    Spring Boot结合JPA(Java Persistence API)和JdbcTemplate,为开发者提供了灵活且强大的多数据源配置能力。本示例将详细介绍如何在Spring Boot项目中实现这样的配置,以支持不同类型的数据库。 首先,我们要理解...

    Spring多数据源配置

    Spring多数据源配置,支持mysql、oracle等多个数据源同时存在的情况

    Spring获取数据源代码

    1. **Spring数据源类型** - **BasicDataSource**: Spring内置的`org.springframework.jdbc.datasource.BasicDataSource`是最常用的数据源实现,它基于Apache Commons DBCP库,提供连接池功能。 - **...

    SSM(Spring+SpringMVC+MyBatis)多数据源配置框架

    在多数据源配置中,Spring能够帮助管理不同的数据源,通过配置bean来切换和控制数据源的使用。 **SpringMVC** 是Spring框架的一部分,专为Web开发设计。它简化了模型-视图-控制器(Model-View-Controller,MVC)的...

    SpringBoot配置多数据源实现动态切换数据源

    多数据源配置允许我们灵活地管理这些数据。 SpringBoot实现多数据源主要依靠Spring的`@Configuration`和`@DataSourceConfiguration`注解,以及Spring JDBC的`DataSource`接口。下面是一个基本的配置示例: ```java...

    Spring配置多个数据源

    Spring框架提供了一种灵活的方式来配置和管理多个数据源,使得这种需求变得简单易行。本文将详细介绍如何在Spring应用中配置多个数据源。 首先,我们来理解数据源(DataSource)的概念。数据源是Java中用于存储...

    Spring Boot使用spring-data-jpa配置Mysql多数据源

    # 主数据源配置 spring: datasource: primary: url: jdbc:mysql://localhost:3306/main_db?useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver...

    spring配置JNDI数据源

    Spring框架作为一个强大的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,提供了多种配置数据源的方式,其中包括通过JNDI(Java Naming and Directory Interface)来查找和配置数据源。...

    Spring 数据源的灵活配置巧应用

    ### Spring 数据源的灵活配置巧应用 #### 一、引言 在现代软件开发中,尤其是基于Java的应用程序,Spring框架已经成为不可或缺的一部分。Spring框架以其轻量级、灵活性及强大的功能,深受开发者们的喜爱。其中,...

    spring mvc 配置多数据源

    # Oracle数据源配置 jdbc.driver=oracle.jdbc.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:dev jdbc.username=ling jdbc.password=229 # MySQL数据源配置 jdbc-mysql.driver=com.mysql.jdbc.Driver ...

    springboot多数据源配置

    在Spring Boot应用中,多数据源配置是一项重要的技术实践,特别是在大型系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或是分布式事务管理。Spring Boot以其强大的自动化配置能力,使得设置多数据源变得...

    spring获取weblogic jndi数据源的两种方式

    本文将详细介绍如何在Spring中配置两种不同的方式来获取WebLogic JNDI数据源。 #### 一、本地WebLogic Server获取 这种方式适用于当Spring应用与WebLogic服务器在同一台物理机器上运行时的情况。在这种模式下,...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    在Spring Boot和Spring Cloud的背景下,我们可以通过Spring的多数据源配置来实现这一目标。 1. **配置多数据源**:Spring Boot提供了DataSourceAutoConfiguration,它允许我们配置多个数据源。每个数据源可以有自己...

    java spring 多数据源

    在Java Spring框架中,多数据源的实现是一个重要的特性,特别是在大型企业级应用中,它允许应用程序连接到多个数据库,从而实现数据隔离、...理解并熟练掌握多数据源配置是提升Spring应用灵活性和健壮性的重要一环。

Global site tag (gtag.js) - Google Analytics