Spring配置数据源

一、总览

    使用Spring管理持久层,不管说JPA、Hibernate、JDBC Template...,都需要配置一个数据源的引用。Spring提供了在Spring上下文中配置数据源Bean的多种方式,包括:
    1、通过JDBC驱动程序定义的数据源;
    2、通过JNDI查找的数据源;
    3、连接池的数据源;
    对于生产环境的应用程序,应首选 JNDI,连接池次之。

二、配置详解

    1、使用JNDI数据源
    Spring应用程序经常部署在JAVA EE应用服务器中,如WebPhere、JBoss、WebLogic或者像Tomcat这样的Servlet容器。这些服务器支持配置通过 JNDI 获取数据源。这种配置的好处在于数据源完全可以在应用程序之外进行管理,这样应用程序在需要访问数据库的时候查找数据源就可以了。另,在应用服务器中管理的数据源通常以池的方式组织,从而具备更好的性能,并且至此和系统管理员对其进行热切换。
    利用Spring,我们可以像使用Spring Bean 那样配置JNDI中数据源的引用并且将其装配到所需的类中。配置如下:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/DB" resource-ref="true"/>

    其中 jndi-name 属性指定JNDI中资源的名称。如果只设置了jndi-name属性,那么就会根据指定的名称查找数据源。但是,如果应用程序运行在JAVA应用程序服务器中,则需要将resource-ref属性设置为true,这样给定的jndi-name将会自动添加java:comp/env/前缀。

    2、使用数据源连接池

    尽管Spring并没有提供数据源连接的具体实现,但 Apache's Jakarta Commons DBCP C3P0 提供了不错的选择。
    DBCP包含了多个提供连接池功能的数据源,其中BasicDataSource是最常用的,因为它易于在Spring中配置。

  <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://10.108.1.97:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
    <property name="username" value="scott" />
    <property name="password" value="tiger" />
    <property name="initialSize" value="5" />
    <property name="maxActive" value="10" />

    当然也可以使用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://10.108.1.97:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
    <property name="user" value="scott" />
    <property name="password" value="tiger" />
    <property name="initialPoolSize" value="5" />
    <property name="maxPoolSize" value="10" />
  </bean>

    3、使用JDBC驱动数据源

    在Spring中,通过JDBC驱动定义数据源是最简单的配置方式。Spring提供了几种数据源对象(位于org.springframework.jdbc.datasource包中)供选择。这几个数据源对象都没有提供连接池功能,所以没有可配置的池相关属性。

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://10.108.1.97:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
    <property name="username" value="scott" />
    <property name="password" value="tiger" />
  </bean>

 

 

posted @ 2014-05-23 18:15  Bruce.Chang.Lee  阅读(410)  评论(0)    收藏  举报