文档章节

Spring配置数据源的常用方式

桃源闲人
 桃源闲人
发布于 2015/02/26 23:56
字数 1225
阅读 300
收藏 19

Spring配置数据源的常用方式

  1. 在应用程序中配置数据源
    (1).在classpath中创建连接参数的配置文件,如db-config.properties,内容如下:
    driverClass=com.mysql.jdbc.Driver  
    url=jdbc:mysql://localhost:3306/zzp  
    username=root  
    password=admin

    (2).在Spring的配置文件中引入参数配置文件,代码如下:

    <!-- 配置spring资源文件 -->  
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
            <property name="locations">    
                <list>    
                    <value>/WEB-INF/config/db-config.properties</value>    
                </list>    
            </property>    
        </bean>

    (3).配置数据源(这里有三种方式,jdbc、dbcp、c3p0)

        A.JDBC的配置方式,该方式区别与其他两种方式在于这种方式使用的是JDBC连接数据库,并没有使用连接池,所以效率和性能方面不及其他两种,该种方式的配置方法:
            
    <!-- 数据源 -->  
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
            <property name="driverClassName"  
                value="${driverClass}">  
            </property>  
            <property name="url" value="${url}">  
            </property>  
            <property name="username" value="${username}"></property>  
            <property name="password" value="${password}"></property>  
        </bean>

        B.使用dbcp的配置(参考文章):

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
            <property name="driverClassName" value="referredDriver" />  
            <property name="url" value="referredDBURL" />  
            <property name="username" value="DBLoginUser" />  
            <property name="password" value="DBLoginUserPassword" />  
            <property name="initialSize" value="5" />  
            <property name="maxIdle" value="30" />  
            <property name="minIdle" value="5" />  
            <property name="maxActive" value="15" />  
            <property name="removeAbandoned" value="true" />  
            <!-- 自动回收超时时间(以秒数为单位) -->  
            <property name="removeAbandonedTimeout" value="300" />  
            <!--超时等待时间以毫秒为单位 -->  
            <property name="maxWait" value="3000" />  
            <property name="defaultAutoCommit" value="false" />  
            <property name="validationQuery">  
                <value>SELECT 1</value>  
            </property>  
            <property name="testOnBorrow">  
                <value>true</value>  
            </property>  
            <property name="testOnReturn">  
                <value>false</value>  
            </property>  
        </bean>

    C.使用C3P0方式配置(参考文章)

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">    
              <!-- 用户名-->    
              <property name="user" value="${username}"/>    
              <!-- 用户密码-->    
              <property name="password" value="${password}"/>    
              <property name="driverClass" value="${driver_class}"/>    
              <property name="jdbcUrl" value="${url}"/>    
        
               <!--连接池中保留的最大连接数。默认值: 15 -->     
              <property name="maxPoolSize" value="20"/>    
              <!-- 连接池中保留的最小连接数,默认为:3-->    
              <property name="minPoolSize" value="2"/>    
              <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->    
              <property name="initialPoolSize" value="2"/>    
        
              <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->     
              <property name="maxIdleTime">60</property>    
                  
              <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->     
              <property name="checkoutTimeout" value="3000"/>    
                  
              <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->     
              <property name="acquireIncrement" value="2"/>    
        
             <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次-->     
              <property name="acquireRetryAttempts" value="0"/>    
        
              <!--重新尝试的时间间隔,默认为:1000毫秒-->     
              <property name="acquireRetryDelay" value="1000" />    
        
              <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 -->     
              <property name="autoCommitOnClose">false</property>    
        
              <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null -->     
              <property name="automaticTestTable">Test</property>    
        
              <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->     
              <property name="breakAfterAcquireFailure">false</property>    
        
              <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->     
              <property name="idleConnectionTestPeriod">60</property>    
              <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0-->     
              <property name="maxStatements">100</property>    
              <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->     
              <property name="maxStatementsPerConnection"></property>    
         </bean>

     

  2. 在Web服务器中配置数据源
    1.以Tomcat为例配置数据源需要将conf/context.xml中添加如下代码:

    <Resource name="jndi/myDataSource"     
                auth="Container"     
                type="javax.sql.DataSource"     
                driverClassName="com.mysql.jdbc.Driver"     
                url="jdbc:mysql://localhost:3306/zwkj"     
                username="root"     
                password="root123!"     
                maxActive="20"     
                maxIdle="10"     
                maxWait="10000"/>

    2.在客户端应用程序中通过JNDI的方式获取数据源,以Spring为例,配置如下:

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">  
            <property name="jndiName">  
                <value>java:comp/env/jndi/myDataSource</value>  
            </property>  
        </bean>

        出以上方式外还可以使用Spring的jee标签配置

    <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jndi/myDataSource" />

        注意:上面两种方式如果配置成后不能正常获取数据源,可在web.xml文件中添加如下代码:

    <resource-ref>  
         <description>JNDI DataSource</description>  
         <res-ref-name>jndi/myDataSource</res-ref-name>  
         <res-type>javax.sql.DataSource</res-type>  
         <res-auth>Container</res-auth>  
    </resource-ref>

        本人在tomcat8下并未在web.xml文件中添加上述代码,可以测试成功,早起在Tomcat6下测试好像不加会报错。



                          》》》》》》》》》》》》》》》》转载请注明出处《《《《《《《《《《《《《《《《

© 著作权归作者所有

共有 人打赏支持
桃源闲人
粉丝 9
博文 10
码字总数 5115
作品 0
深圳
高级程序员
私信 提问
分析共享Spring配置数据源四种方式(附相应jar包)

使用spring框架时,平常你都使用那种数据源呢?本篇博客将分享spring常用的四种配置数据源方式。 以下使用Oracle10g版本作为例子。 第一种:使用spring自带的DriverManagerDataSource 配置文...

晨曦之光
2012/08/22
2.2K
1
分析总结Spring管理Hibernate中Dao层访问数据库常用方式(附SSH的jar包)

上篇博客中已经讲解Spring配置数据源的常用的几种方式。接下来本篇博客继续讲解。配置完数据源,那Dao层是如何访问数据库呢? 基于最近的项目使用SSH2框架完成,分析总结Spring与Hibernate集...

晨曦之光
2012/08/22
588
0
SSH框架之Spring4专题4:Spring与DAO

本专题内容主要包含两部分:Spring所使用的操作数据库的技术之一,JDBC模版的使用;另一部分则为Spring对于事务的管理。 Spring与Dao部分,是Spring的两大核心技术loC与AOP的经典应用体现: ...

糖醋白糖
06/26
0
0
spring和mybatis整合及逆向工程

思路 需要spring通过单例方式管理sqlSessionFactory spring和mybatis整合生成代理对象,使用sqlSessionFactory创建SqlSession。(spring和mybtis整合自动完成) 持久层的mapper都需要由sprin...

lambdaλ
08/02
0
0
spring-boot-starter-mongodb-pool

在日常工作中,我们通过Spring Data Mongodb来操作Mongodb数据库,在Spring Boot中只需要引入spring-boot-starter-data-mongodb即可。 很多时候我们往往需要操作多个数据库(微服务架构下一个...

尹吉欢
04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SRE的含义及与 DevOps 如何关联?

虽然站点可靠性工程师(site reliability engineer SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题...

linuxCool
12分钟前
1
0
月入3万之一个程序员的转行坎坷历程

陈年往事 “我月入3万,怎么会少少了你一个鸡蛋啊?” 这是2017年9月左右的一个新闻,一位煎饼摊大妈因和顾客争执时脱口而出这样一句话而走红。当时还上了各大新闻的头条。 互联网兴起今天,...

苏南-首席填坑官
34分钟前
1
1
OSChina 周一乱弹 —— 眼看着这颗陨石砸了下来

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Nachtblut的单曲《Antik》 《Antik》- Nachtblut 手机党少年们想听歌,请使劲儿戳(这里) @mr_chip :上海的初雪之后有点冷 ...

小小编辑
59分钟前
266
7
Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
今天
2
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部