zoukankan      html  css  js  c++  java
  • 【JAVA】Spring 数据源配置整理

            在Spring中,不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试。
    配置数据源
            Spring在第三方依赖包中包含了两个数据源的实现类包:其一是Apache的DBCP;其二是C3P0。可以在Spring配置文件中利用这两者中的任何一个配置数据源。
    • DBCP数据源
      • DBCP类包位于commons-dbcp.jar,DBCP一个依赖对象池机制的数据库连接池,所以在类路径下还必须包括commons-pool.jar。在该数据源中BasicDataSources提供了close方法关闭数据源,所以必须设定destroy-method="close"属性,以便Spring容器关闭时,数据源能够正常关闭。
      • DBCP的XML文件配置如下:
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    <property name="driverClassName" value="${db.driverClassName}"/>  
    <property name="url" value="${db.url}"/>  
    <property name="username" value="${db.username}"/>  
    <property name="password" value="${db.password}"/>
    <property name="testOnBorrow" value=true/>  
    <property name="validationQuery" value="SELECT 1"/>
    <!--initialSize: 初始化连接-->  
       <property name="initialSize" value="5"/>  
    <!--maxIdle: 最大空闲连接--> 
    <property name="maxIdle" value="10"/> 
    <!--minIdle: 最小空闲连接-->  
    <property name="minIdle" value="5"/>  
    <!--maxActive: 最大连接数量-->  
    <property name="maxActive" value="15"/>  
    <!--removeAbandoned: 是否自动回收超时连接-->  
    <property name="removeAbandoned" value="true"/>  
    <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->  
    <property name="removeAbandonedTimeout" value="180"/>  
    <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->  
    <property name="maxWait" value="3000"/>  
        </bean> 
    • C3P0数据源
      • C3P0是一个开源代码的JDBC数据源实现项目,它在lib目录中与Hibernate一起发布,实现JDBC3和JDBC2扩展规范说明的Connection和Statement池。C3P0类包位于c3p0-0.9.0.4.jar中。ComboPooledDataSource数据源和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释放。
      • C3P0数据源配置如下:
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
      <property name="driverClass">com.mysql.jdbc.Driver</property>
      <property name="jdbcUrl">jdbc:mysql:///day14</property>
      <property name="user">root</property>
      <property name="password">sorry</property>
      <property name="acquireIncrement">10</property>
      <property name="initialPoolSize">30</property>
      <property name="minPoolSize">5</property>
      <property name="maxPoolSize">40</property>
      <property name="maxStatements">1000</property>
      <property name="maxStatementsPerConnection">100</property>
    </bean>    
     
    获取JNDI数据源
            Spring专门提供引用JNDI资源的JndiObjectFactoryBean类,配置有如下两种方式:
            第一:使用JndiObjectFactoryBean定义
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="java:/Sms3_CustDB"/>
    </bean>
            第二:使用jee命名空间
            <jee:jndi-lookup id="dataSource" jndi-name=" java:/Sms3_CustDB "/>
     
    Spring的数据源实现类

            Spring本身提供了一个简单的数据源实现类DriverManagerDataSource,它实现了DataSource接口,但是它并没有提供池化连接的机制,每次调用getConnection()获取新连接是,只是简单的创建一个新的连接。

     
     
            
  • 相关阅读:
    MFC 记录 CreateProcess启动外部游戏主程序
    MFC 记录 CListCtrl 学习使用
    MS SQL自定义字符串拆分函数的惨痛经历
    C#路径/文件/目录/I/O常见操作汇总
    2012年开发者该做的11件事
    取出AD中一個組的所有成員信息(C#實現功能配合EXT做的界面)
    代码注释规范
    基于工作实际需求的Ext.Net和C#搭配应用之一 取出网域(AD)中所有计算机名及位置描述等信息
    2012,我的C#全能Excel操作(无需Office,不使用XML)
    一個文件文件和路徑的類
  • 原文地址:https://www.cnblogs.com/liuyongcn/p/3567854.html
Copyright © 2011-2022 走看看