Spring框架中获取连接池的几种方式

本文详细介绍了数据库连接池的概念及其在应用程序中的重要性。通过合理的连接池管理,可以显著提高应用程序的性能并减少资源浪费。文章还提供了DBCP、C3P0及Spring提供的DriverManagerDataSource配置示例。

什么是数据库连接池?

     数据库连接池是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池就是用来解决这些问题而提出的。

     数据库连接池负责分配、管理和释放数据库连接。实际应用中,频繁的连接和关闭数据库,将会产生极大的消耗,影响应用的性能,造成不必要的资源浪费。连接池会预先创建一部分数据库连接以便使用,同时允许应用程序重复使用一个现有的数据库连接。数据库连接池创建的时候设置连接池最小和最大连接数,最小连接数即为,不管该连接是否被使用,都会预先创建。如果连接使用超出最小连接数,会在创建一个数据库连接。最大连接数为该连接池能承载的最大连接数量,如果超出这个数,后面的数据库连接请求将会进入等待队列。超出最小连接数而创建的连接使用结束后,不会被立马释放,而是会被放在连接池中等待被重复使用,或者等超出空闲时间后被释放。

连接方式:

   1.DBCP数据源:

    (数据源:连接数据库所需的类和参数)

    DBCP配置Mysql数据源(通常是写在mybatis的配置文件中):

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
    
    <!--initialSize: 初始化连接--> 
    <property name="initialSize" value="5"/> 
    <!--maxIdle: 最大空闲连接--> 
    <property name="maxIdle" value="10"/> 
    <!--minIdle: 最小空闲连接--> 
    <property name="minIdle" value="5"/> 
    <!--maxActive: 最大连接数量--> 
    <property name="maxActive" value="15"/>
    
    <!--removeAbandoned: 是否自动回收超时连接--> 
    <property name="removeAbandoned" value="true"/> 
    <!--removeAbandonedTimeout: 超时时间(以秒数为单位)--> 
    <property name="removeAbandonedTimeout" value="180"/> 
    <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> 
    <property name="maxWait" value="3000"/> 
    <!-- 在空闲连接回收器执行周期(毫秒) -->
    <property name="timeBetweenEvictionRunsMillis" value="10000"/>
    <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
    <property name="numTestsPerEvictionRun" value="10"/>
    <!-- 最小空闲时间-->
    <property name="minEvictableIdleTimeMillis" value="10000"/>
    <!-- 验证链接是否有效的sql语句 -->
    <property name="validationQuery" value="select 1" />
    <!-- 获取链接之前是否测试链接的可用性 -->
    <property name="testOnBorrow" value="true"/> 
</bean> 

   2.C3P0数据源:

      C3P0是一个开源的JDBC数据源实现项目,依赖包:c3p0-0.9.0.4.jar,xml中配置方式与DBCP类似,此处不再赘述。

   3.Spring的数据源实现类 DriverManagerDataSource:

     这是Spring本身提供的一个简单的数据源实现类,它位于org.springframework.jdbc.datasource接口中。该类实现接口javax.sql.DataSource接口,但是它并没有提供池化的连接机制,每次调用getConnection()获取新连接时,只是简单的创建一个新的连接。因此这个数据源类比较适合在单元测试或简单的独立应用中使用,因为它不需要添加额外的依赖类。

<bean id="driverManagerDateSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql:///dstest" />
        <property name="username" value="root" />
        <property name="password" value="root"></property>
    </bean>
    <!-- 获取该对象调用execute方法,可以执行sql语句 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="driverManagerDateSource"></property>
    </bean>

    4.获取JNDI数据源:

       如果应用部署在高性能的应用服务器上(eg:weblogic、websohere等),我们希望使用应用服务器本身提供的数据源。应用服务器使用JNDI开放调用者使用,Spring专门为此提供引用JNDI资源的JndiObjectFactoryBean类。

 

写在最后:本人的第一篇技术博客,留个纪念^_^,如有问题之处,还望多多指正~~感谢大家支持~ 希望以后一起学习,一起进步!

 

转载于:https://www.cnblogs.com/qianlang/p/10339078.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值