1,  Spring指定 datasource

DataSource接口,在javax.sql包,里边有一个getConnection()方法。提供了标准化的取得连接的方式。只要实现了这个接口。Sun这个土鳖定的。

  a)         参考文档,找dbcp.BasicDataSource  (dbcp:database connection pool数据库连接池)

    i.  c3p0

    ii.     dbcp

    iii.    proxool

  b)        在DAO或者Service中注入dataSource

  c)         在Spring中可以使用PropertyPlaceHolderConfigure来读取properties文件的内容

在beans.xml配置里写:

 <!-- DataSource去哪里读取连接池配置 -->

       <bean         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<!-- 在src根目录下建jdbc.properties配置文件 -->
<value>classpath:jdbc.properties</value>
</property>
</bean>

DataSource:注意这里使用dbcp,使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar

 <!-- dbcp連接池 ,根据上边的配置去配置文件去读取配置-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="5"/>
<property name="maxActive" value="20"/>
</bean>

在src根目录建jdbc.properties配置,名称和DataSource里要一致:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root

将DataSource数据源注入到DAO:

<bean id="userDAO" class="com.oracle.dao.impl.UserDAOImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>

dbcp连接池配置:

<!-- 连接池启动时的初始值 -->
  <property name="initialSize" value="10"
/>
  <!-- 连接池的最大值 -->
  <property name="maxActive" value="100"
/>
  <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止
-->
  <property name="maxIdle" value="50" />
  <!--
最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
  <property
name="minIdle" value="10"
/>
  <!--#给出一条简单的sql语句进行验证-->
  <property
name="validationQuery" value="select getdate()"
/>
  <!--#在取出连接时进行有效验证-->
  <property name="testOnBorrow"
value="true" />
  <property name="removeAbandonedTimeout" value="120"
/>
  <property name="removeAbandoned" value="true" />
  <!--
#运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
  <property
name="timeBetweenEvictionRunsMillis" value="3600000" />
  <!--
#连接的超时时间,默认为半小时。 -->
  <property name="minEvictableIdleTimeMillis"
value="3600000" />  
 </bean>

(
以下内容摘在springside):
DBCP的性能配置主要是4个参数
#连接池启动时的初始值.
dbcp.initialSize=10 
#连接池的最大值.
dbcp.maxActive=50 
#最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止。
dbcp.maxIdle=20 
#最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请。
dbcp.minIdle=5 
一般这几个参数应该放在applicationContext.properties里方便部署时快速修改。
有两种配置风格,
 
比如较少使用者的管理界面,平时的使用者不多,但瞬时可能会有较多的使用者,如Mini-Web,会设置一个较低的maxIdle
而设置较高的maxActive。 
 
比如长期高负荷运行的业务系统,会设置一个合理的maxIdle值,且maxActive==maxIdle 
长期idle连接的处理:
Mysql服务端会断开超过8小时的空闲连接,如果系统只在白天工作时间被使用,DBCP的连接就很容易被断开的连接,而且DBCP对jdbc
url里设置autoReconnect=true是无效。
更好的做法DBCP主动断开超时的连接。
#运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。
timeBetweenEvictionRunsMillis=3600000
#连接的超时时间,默认为半小时。
minEvictableIdleTimeMillis=3600000
经测试,按上面的设置,DBCP会在连接idle两小时后将其断开。

Spring整合Hibernate_数据源Datasource_dbcp连接池的更多相关文章

  1. Spring整合JDBC和Druid连接池

    我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...

  2. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  3. Spring(Bean)4 配置数据源、连接池

    <!-- 配置数据源 Mysql c3p0: 连接池. <bean id="dataSource" class="com.mchange.v2.c3p0.Co ...

  4. SpringBoot 整合mongoDB并自定义连接池

    SpringBoot 整合mongoDB并自定义连接池 得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoTemplate,它 ...

  5. 在 Spring Boot 中使用 HikariCP 连接池

    上次帮小王解决了如何在 Spring Boot 中使用 JDBC 连接 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 连接池.但我等 ...

  6. 《深入理解mybatis原理3》 Mybatis数据源与连接池

    <深入理解mybatis原理> Mybatis数据源与连接池 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构 ...

  7. eclipse下jdbc数据源与连接池的配置及功能简介

    今天在做四则运算网页版的时候遇到了一个困惑,由于需要把每个产生的式子存进 数据库,所以就需要很多次重复的加载驱动,建立连接等操作,这样一方面写程序不方便,加大了程序量,另一方面,还有导致数据库的性能急 ...

  8. Spring整合Durid数据源

    Spring整合Durid数据源 一.导入依赖 <!-- Druid数据源 --> <dependency> <groupId>com.alibaba</gr ...

  9. Spring boot中配置HikariCP连接池

    # jdbc_config datasourcespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasourc ...

随机推荐

  1. windows环境下配置tornado

    1.前言        在网上看过一些在windows下配置tornado的教程,有一些写的十分复杂,让人望而生却.然后我就自己试着在windows下面配置tornado.我发现,方法非常简单,短短几 ...

  2. Codeforces768B Code For 1 2017-02-21 22:17 95人阅读 评论(0) 收藏

    B. Code For 1 time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  3. handsontable-developer guide-cell type

    单元格类型:这里有很多没见过的用法,得好好总结一下 //预定义的类型Text Numeric Checkbox Date Select Dropdown Autocomplete Password H ...

  4. 初尝2D骨骼动画编辑工具SPINE,并into Unity3D

    一.SPINE使用 研究2D骨骼动画,CYou的朋友介绍我SPINE这个工具,开发自Esoteric Software的一款专门制作2D动画的软件,网络上的资料还很少,我这从半吊子美术技术的角度简单说 ...

  5. selenium 元素可以定位到,但是无法点击问题

    报错1: selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (82, ...

  6. Solr特性:Schemaless Mode(自动往Schema中添加field)

    WiKi:https://cwiki.apache.org/confluence/display/solr/Schemaless+Mode 介绍: Schemaless Mode is a set o ...

  7. 构建命令maven install 打包不是最新的代码

    问题: 之前一直用的是mvn install 命令来构建项目,但是最近发现最新的代码没有在war包中.之前看的说 mvn install 命令会执行之前的所有阶段,会被编译,测试,打包. 经查最后采用 ...

  8. Cesium开发实践汇总

    一.简介.开发环境搭建 二.Viewer控件 三.地图图层介绍 四.地形介绍 五.坐标变换 六.CZML 七.3D模型

  9. 抓取DUMP日志

    http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx procdump -ma -c 60 -s 10 -n 3 <PID ...

  10. iOS UIText 或 UILabel 显示 HTML 并正确选用编码

    有的时候我们可能会选用 UIText 或 UILabel 来显示 HTML 代格式的文字. NSAttributedString *html = [[NSAttributedString alloc] ...