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. Mixin模式

    Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现. Mixin是掺合,混合,糅合的意思,即可以就任意一个对象的全部或部分属性拷贝到另一个对象上. 从提供的接口 ...

  2. delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  3. ASP.NET系列:自定义配置节点的复用

    appSettings太简单,为每个程序自定义配置节点太复杂,因此要解决app.config&web.config自定义配置的复用问题. 1.读取不依赖SectionName,根节点可以定义为 ...

  4. webapi中session为null的解决方案

    Session  webapi中session为null的解决方案 在Global.asax里添加:开启Session功能(默认是不开启) 重写init方法 public class WebApiAp ...

  5. iOS Objective-C 中 bool 与 BOOL 的你不一定知道的事

    测试一下这段代码: - (void)test { NSLog(@"this is an attribut: %d", anAttribute); ; i < ; i++) { ...

  6. WPF 无边框拖动

    无边框之后的拖动方法有三种. 我个人是喜欢第一和第三的方法,看个人去需求. 第三种代码比较仓促,有需要者可以立马用,或者稍作整理修改. 对于WIN10 .NET 4.5以上的框架可以使用 WIndow ...

  7. Gogland配置- 去掉Go源代码中的参数提示

    Gogland处于好意,在Go源代码中对每个参数提示类型,这或许方便大家处理源代码,但是我觉得对于正常阅读源代码反而造成一种负担,我决定去掉这个功能! Gogland默认配置状态,有参数提示: 下面是 ...

  8. sqlite3简单操作

    最近在操作公司视频设备的tutk转发服务器的时候,用到的数据库是sqlite,在此复习一下 目录 1 建立数据库档案 2 在sqlite3提示列下操作 3 SQL的指令格式 4 建立资料表 5 建立索 ...

  9. 【OCP-12c】2019年CUUG OCP 071考试题库(74题)

    74.View the exhibit and examine the structure of ORDERS and CUSTOMERS tables. ORDERS Name     Null?  ...

  10. CodeChef March Challenge 2019题解

    传送门 \(CHNUM\) 显然正数一组,负数一组 for(int T=read();T;--T){ n=read(),c=d=0; fp(i,1,n)x=read(),x>0?++c:++d; ...