文档章节

Spring(五):配置dataSource连接池

_
 _Roger_
发布于 2015/09/21 14:49
字数 983
阅读 1587
收藏 0

    一般情况下都会在spring的配置文件中进行数据源的配置,为了提高数据源的内存利用效率基本上都是会配置数据源连接池的。

       在讲到连接池之前我们先看一下数据源直接连接数据库的配置,以下就是最简单的jdbc直接连接数据库的配置,它不会对我们获取连接、释放连接等进行优化,就和我们直接利用纯jdbc操作数据库一样,每一次的连接数据库、释放数据库连接都会消耗系统资源,如果用户量很大的话,这显然会消耗相当大的资源,所以一般上线运行的系统都是会已连接池的方式来优化处理数据源的。

1、jdbc直接连接数据库的配置

   <!-- 配置数据源dataSource  jdbc方式连接数据源 -->
   <bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
        <property name="url"value="jdbc:mysql://localhost:3306/mydatabase"  />
        <propertyname="username" value="root"/>
        <propertyname="password" value="root"/>
   </bean>


2、数据源连接池配置

    一般而言,常用的数据库连接池有DBCP,C3P0, proxool,另外还有一个出道迟一些但是性能比前面这3个又一许多的连接池BoneCp。

    DBCP是apache组织的一个开源的连接池项目,不过现在好像已经停止维护了,据说问题比较多,连接死锁问题比较严重。

    C3P0是hibernate官方指定的数据库连接池工具,性能稳定,不过占用资源相对较多。

    Proxool据说性能比从C3P0好一些,消耗资源也少。

    BoneCp连接池网上有测试数据显示其运行效率可以达到C3P0、Proxool的25倍,并且稳定性也不错,所以被许多开发者推崇!但是要求jdk1.5+。

2.1、dbcp

   <!--  配置数据源dataSource  dbcp连接池方式连接数据源   -->
   <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
      <propertyname="url"
         value="jdbc:mysql://localhost:3306/mydatabase"/>
      <propertyname="driverClassName"value="com.mysql.jdbc.Dirver" />
      <propertyname="username" value="root" />
      <propertyname="password" value="root" />
      
      <!--配置初始化大小、最小、最大-->
      <property name="initialSize"value="1"/>
      <propertyname="minIdle" value="1"/>  
      <propertyname="maxActive" value="30"/> 
   </bean>


2.2、druid

druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本属性 url、user、password -->
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>

    <!-- 连接初始值,连接池启动时创建的连接数量的初始值 -->
    <property name="initialSize" value="${ds.initialSize}"/>
    <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
    <property name="minIdle" value="${ds.minIdle}"/>
    <!--最大连接数据库连接数,设置为0时,表示没有限制-->
    <property name="maxActive" value="${ds.maxActive}"/>
    
    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait" value="${ds.maxWait}"/>

    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/>

    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/>
    
    <!-- 用来检测连接是否有效的sql,要求是一个查询语句,如果validationQuery为
             null,testOnBorrow、testOnReturn、testWhileIdle都不起其作用。 --> 
    <property name="validationQuery" value="SELECT 'x'"/>
    <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于
             timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。  -->  
    <property name="testWhileIdle" value="true"/>
    <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
    <property name="testOnBorrow" value="false"/>
    <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
    <property name="testOnReturn" value="false"/>

    <!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
    <property name="poolPreparedStatements" value="false"/>
    <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>

    <!-- 配置监控统计拦截的filters -->
    <property name="filters" value="stat"/>
</bean>

druid配置参考:http://blog.csdn.net/yunnysunny/article/details/8657095


© 著作权归作者所有

_
粉丝 31
博文 82
码字总数 39915
作品 0
武汉
私信 提问
Spring Boot(16)——使用DataSource

使用DataSource 需要使用DataSource可以在pom.xml中添加依赖,这会自动加入Spring Jdbc的依赖。还需要加入相应的JDBC驱动包的依赖,笔者这里使用的是MySQL的驱动。 DataSource的自动配置由负...

elim168
01/05
0
0
springboot2.1.0.RELEASE 中配置数据源。

一、查看当前正在使用的连接池。 通过下面的代码,可以查看当前正在使用的连接池: 二、默认连接池。 springboot2.1.0.RELEASE 的文档: https://docs.spring.io/spring-boot/docs/2.1.0.RE...

王坤charlie
06/19
0
0
微服务配置中心实战:Spring + MyBatis + Druid + Nacos

在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring 中可以怎么...

中间件小哥
2018/12/21
0
0
Spring配置文件applicationContext.xml(3)开启事务和注解

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns si="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.......

绝影
2012/04/13
0
0
Spring+jdbc在插入数据的时候报错

各位帮帮忙,谢谢!!!用了springmvc+spring+jdbc 这是异常信息:log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationConte......

养生程序猿
2013/03/04
5.4K
4

没有更多内容

加载失败,请刷新页面

加载更多

北斗三号IGSO-2卫星发射成功!

6月25日,中国航天科技集团官方公众号宣布,北斗三号IGSO-2卫星发射成功! 航天科技集团表示,6月25日2点09分,我国在西昌卫星发射中心用长征三号乙运载火箭成功将北斗三号第2颗倾斜地球同步...

linuxCool
13分钟前
0
0
阿里java开发规约的Idea插件安装(英文)

Idea Plugin Prepare Project JDK: 1.7+ Gradle: 3.0+(Require JDK1.8+ for gradle) Build cd p3c-ideagradle clean buildPlugin Run plugin cd p3c-ideagradle runIde# run speci......

Airship
23分钟前
0
0
很多人转行做程序员选择web前端学习,前端简单在哪里?

不管你是工人阶层还是服务行业,是否想过转行IT,转行IT后肯定会选择一门编程语言进行深入学习,很多转行的人基础都不是太好,不是科班出身,甚至有的是专科乃至中专,前端的HTML和CSS相对其...

智云编程
36分钟前
0
0
一文读懂内网、公网和NAT

我们做弱电监控系统的时候,都避免不了要跟IP地址打交道,比如摄像头、NVR、服务器等这些设备安装好之后,就需要给它们配上IP,那这个IP地址你了解嘛?今天我们就一起来聊聊什么是内网、公网和...

老孟的Linux私房菜
40分钟前
4
0
聊聊dubbo的ExecuteLimitFilter

序 本文主要研究一下dubbo的ExecuteLimitFilter ExecuteLimitFilter dubbo-2.7.2/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java public clas......

go4it
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部