文档章节

Spring配置数据源的常用方式

桃源闲人
 桃源闲人
发布于 2015/02/26 23:56
字数 1225
阅读 257
收藏 19
点赞 0
评论 0

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下测试好像不加会报错。



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

© 著作权归作者所有

共有 人打赏支持
桃源闲人
粉丝 8
博文 10
码字总数 5115
作品 0
深圳
高级程序员
Spring注解事务@Transactional

在声明式事务中我们比较常用的有两种:一种是基于tx和aop命名空间的xml文件。第二种是基于@Transactional的注解。两种都比较常用。前一种只要定义好规范就可以按照规范对方法进行命名。第二种...

u014231523 ⋅ 2017/02/27 ⋅ 0

spring-boot-starter-mongodb-pool

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

尹吉欢 ⋅ 04/22 ⋅ 0

SpringBoot详解(一)-快速入门

SpringBoot详解系列文章: SpringBoot详解(一)-快速入门 SpringBoot详解(二)-Spring Boot的核心 SpringBoot详解(三)-Spring Boot的web开发 SpringBoot详解(四)-优雅地处理日志 一、S...

CSDN_LQR ⋅ 2017/08/30 ⋅ 0

Spring boot中mongodb的使用

mongodb的增删改查 Spring Boot对各种流行的数据源都进行了封装,当然也包括了mongodb,下面给大家介绍如何在spring boot中使用mongodb: 1、pom包配置 pom包里面添加spring-boot-starter-dat...

glen_xu ⋅ 06/11 ⋅ 0

Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统

今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成。 SpringMVC+Mybatis Web开发流程 配置数据源 在applicationContext.xml中引入数据源的配置: 在spring-my...

青夜之衫 ⋅ 2017/12/05 ⋅ 0

【死磕Sharding-jdbc】—基于 SSM 集成sharding-jdbc2.0.3

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/7b6997c3586d 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为2.0.3)进行分库分表...

飞哥-Javaer ⋅ 05/27 ⋅ 0

spring+mybitas 实现多数据源动态切换

1 由于项目需要,需要将不同来源的数据存入不同的数据库,所以需要根据入参的信息动态切换数据源 项目core层采用了spring+mybitas 方式进行架构 1 在spring的配置中定义两个数据源 2创建一个...

black_c ⋅ 05/15 ⋅ 0

Spring Cloud Config采用数据库存储配置内容

在之前的《Spring Cloud构建微服务架构:分布式配置中心》一文中,我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储。这一设计巧妙的利用Git自身机制以及其他具有丰富...

程序猿DD ⋅ 06/15 ⋅ 0

聊聊Druid(一)-- 配置与初始化

这里以我们常用在spring环境中集成druid的方式进行说明。 spring中的druid配置参考: 通常来说,只需要修改initialSize、minIdle、maxActive。 如果用Oracle,则把poolPreparedStatements配置...

evexu ⋅ 03/02 ⋅ 0

huangdf/seezoon-framework-all

项目介绍 基于spring,mybatis,shiro面向接口开发的的一套后台管理系统,方便快速开发;采用常用的技术栈,降低学习成本,项目完全前后端分离,后端定义统一的接口格式,统一参数校验,统一权...

huangdf ⋅ 04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 7分钟前 ⋅ 0

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个...

honeymose ⋅ 12分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 23分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 28分钟前 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 30分钟前 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 36分钟前 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 39分钟前 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 39分钟前 ⋅ 0

only_full_group_by

我的mysql是在CentOS7.1下面的5.7.17 在 /etc/my.cnf 文件里加上如下: sql_mode='NO_ENGINE_SUBSTITUTION' 然后,重启Mysql服务 systemctl restart mysqld...

SunHacker ⋅ 今天 ⋅ 0

实际项目(SpringBoot项目)中集成Druid

参考网页 https://blog.csdn.net/liuchuanhong1/article/details/55050131 https://blog.csdn.net/CoffeeAndIce/article/details/78707819 https://www.pocketdigi.com/20170530/1577.html 为......

karma123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部