SpringMVC数据库连接配置大全

此文件中有dbcp、c3p0、druid三种配置方式

1. dbConfig.properties 文件

#----------------数据库连接基本配置---------------
#数据库驱动
dataSource.driverClassName=com.mysql.jdbc.Driver
#数据库连接地址
dataSource.url=jdbc\:mysql\://127.0.0.1\:3306/qfx_activiti_test?characterEncoding\=UTF-8
#用户名
dataSource.userName=root
#密码
dataSource.passWord=666666
#SQL查询,在将连接返回给调用者之前,用来验证从连接池取出的连接是否有效
dataSource.validationQuery=select 1

#----------------dbcp连接池配置-----------------
#初始连接数量
dbcp.initialSize=5
#最大连接数量
dbcp.maxActive=50
#最小空闲连接数量
dbcp.minIdle =5
#最大空闲连接数量
dbcp.maxIdle=20
#最大等待连接时间(以毫秒计数,1000等于60秒)
dbcp.maxWait=1000
#连接超时是否自动回收
dbcp.removeAbandoned=true
#每隔一定时间去检测一次空闲连接是否超时(毫秒),默认值为-1,即不开启
dbcp.timeBetweenEvictionRunsMillis=60000
#连接池中连接,在时间段内一直空闲,被逐出连接池的时间(毫秒)
dbcp.minEvictableIdleTimeMillis=59000
#后台对象清理时,每次检查几个连接,建议设置和maxActive一样大,这样每次可以有效检查所有的连接
dbcp.numTestsPerEvictionRun=50
#定时对线程池中的连接进行校验,对无效的链接进行关闭后,会适当建立连接保证最小的minIdle连接数
dbcp.testWhileIdle=true

#----------------c3p0连接池配置-----------------
#连接池中保留的最小连接数.默认为:3
c3p0.minPoolSize=10
#连接池中保留的最大连接数.默认为:15
c3p0.maxPoolSize=100
#初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3
c3p0.initialPoolSize=10
#最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0
c3p0.maxIdleTime=60
#JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量,如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。默认值:0
c3p0.maxStatements=6000
#定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0
c3p0.maxStatementsPerConnection=0
#每60秒检查所有连接池中的空闲连接.默认值:0,不检查
c3p0.idleConnectionTestPeriod=1800
#当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值:3
c3p0.acquireIncrement=5
#定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度
c3p0.preferredTestQuery=select 1
#c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成.扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行.默认值:3
c3p0.numHelperThreads=3

#----------------druid连接池配置-----------------
#属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
druid.filters=stat
#最大并发连接数
druid.maxActive=20
#初始化连接数量
druid.initialSize=1
#配置获取连接等待超时的时间
druid.maxWait=60000
#最小空闲连接数
druid.minIdle=10
#最大空闲连接数
druid.maxIdle=15
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
druid.timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
druid.minEvictableIdleTimeMillis=300000
#建议配置为true,不影响性能,并且保证安全性.申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效.
druid.testWhileIdle=true
#申请连接时执行validationQuery检测连接是否有效,这里建议配置为true,防止取到的连接不可用,但会降低性能,默认值:true
druid.testOnBorrow=true
#归还连接时执行validationQuery检测连接是否有效,会降低性能,默认值:false
druid.testOnReturn=false
#缓存preparedStatement,也就是PSCache,对支持游标的数据库性能提升巨大,比如说oracle,在mysql5.5以下的版本中没有PSCache功能,建议关闭掉,5.5及以上版本有PSCache,建议开启
druid.maxOpenPreparedStatements=20

2. applicationContext-dataSources.xml 配置文件

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

    <!-- 1 引用数据库连接配置文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                 <value>classpath:dbConfig.properties</value>
            </list>
        </property>
    </bean>

    <!-- 2.1 配置tomcat dbcp连接池,destroy-method="close"是将用完的connect重新放回连接池 -->
    <bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="driverClassName" value="${dataSource.driverClassName}" />
        <property name="url" value="${dataSource.url}" />
        <property name="username" value="${dataSource.userName}" />
        <property name="password" value="${dataSource.passWord}" />
        <!-- 配置验证连接有效与否的SQL,不同的数据库配置不同 -->
        <property name="validationQuery" value="${dataSource.validationQuery}" />

        <!-- 初始连接 -->
        <property name="initialSize" value="${dbcp.initialSize}" />
        <!-- 最大连接 -->
        <property name="maxActive" value="${dbcp.maxActive}" />
        <!--最小空闲连接-->
        <property name="minIdle" value="${dbcp.minIdle}" />
        <!-- 最大空闲连接 -->
        <property name="maxIdle" value="${dbcp.maxIdle}" />
        <!-- 最大等待连接(以毫秒计数) -->
        <property name="maxWait" value="${dbcp.maxWait}" />
        <!--连接超时是否自动回收-->
        <property name="removeAbandoned" value="${dbcp.removeAbandoned}" />
        <!-- 每隔一定时间去检测一次空闲连接是否超时(毫秒),默认值为-1,即不开启 -->
        <property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" />
        <!-- 连接池中连接,在时间段内一直空闲,被逐出连接池的时间(毫秒) -->
        <property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" />
        <!-- 后台对象清理时,每次检查几个连接,建议设置和maxActive一样大,这样每次可以有效检查所有的连接 -->
        <property name="numTestsPerEvictionRun" value="${dbcp.numTestsPerEvictionRun}" />
        <!-- 定时对线程池中的连接进行校验,对无效的链接进行关闭后,会适当建立连接保证最小的minIdle连接数 -->
        <property name="testWhileIdle" value="${dbcp.testWhileIdle}" />
    </bean>

    <!-- 2.2 配置c3p0连接池,destroy-method="close"是将用完的connect重新放回连接池 -->
    <bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${dataSource.driverClassName}" />
        <property name="jdbcUrl" value="${dataSource.url}" />
        <property name="user" value="${dataSource.userName}" />
        <property name="password" value="${dataSource.passWord}" />
        <!--定义所有连接测试都执行的测试语句.在使用连接测试的情况下这个一显著提高测试速度 -->
        <property name="preferredTestQuery" value="${dataSource.validationQuery}" />

        <!--连接池中保留的最小连接数.默认为:3-->
        <property name="minPoolSize" value="${c3p0.minPoolSize}" />
        <!--连接池中保留的最大连接数.默认为:15 -->
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
        <!--初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3 -->
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
        <!--最大空闲时间,60秒内未使用则连接被丢弃.若为0则永不丢弃.默认值: 0 -->
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
        <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量,如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭.默认值:0-->
        <property name="maxStatements" value="${c3p0.maxStatements}" />
        <!--定义了连接池内单个连接所拥有的最大缓存statements数.默认值:0 -->
        <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}" />
        <!--每60秒检查所有连接池中的空闲连接.默认值:0,不检查-->
        <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}" />
        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.默认值:3 -->
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
        <!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成.扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行.默认值:3-->
        <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />
    </bean>

    <!-- 2.3  配置阿里 druid数据库连接池,destroy-method="close"是将用完的connect重新放回连接池 -->
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
         <!-- 数据库基本信息配置 -->
         <property name="driverClassName" value="${dataSource.driverClassName}" />
         <property name="url" value="${dataSource.url}" />
         <property name="username" value="${dataSource.userName}" />
         <property name="password" value="${dataSource.passWord}" />
         <!-- 配置验证连接有效与否的SQL,不同的数据库配置不同 -->
         <property name="validationQuery" value="${dataSource.validationQuery}" />

         <!-- 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall -->
         <property name="filters" value="${druid.filters}" />
         <!-- 最大并发连接数 -->
         <property name="maxActive" value="${druid.maxActive}" />
         <!-- 初始化连接数量 -->
         <property name="initialSize" value="${druid.initialSize}" />
         <!-- 配置获取连接等待超时的时间 -->
         <property name="maxWait" value="${druid.maxWait}" />
         <!-- 最小空闲连接数 -->
         <property name="minIdle" value="${druid.minIdle}" />
         <!-- 最大空闲连接数 -->
         <!-- <property name="maxIdle" value="${druid.maxIdle}" /> -->
         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
         <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
         <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
         <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
         <!-- 建议配置为true,不影响性能,并且保证安全性.申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效. -->
         <property name="testWhileIdle" value="${druid.testWhileIdle}" />
         <!-- 申请连接时执行validationQuery检测连接是否有效,这里建议配置为TRUE,防止取到的连接不可用,但会降低性能,默认值:true-->
         <property name="testOnBorrow" value="${druid.testOnBorrow}" />
         <!-- 归还连接时执行validationQuery检测连接是否有效,会降低性能,默认值:false -->
         <property name="testOnReturn" value="${druid.testOnReturn}" />
         <!-- 缓存preparedStatement,也就是PSCache,对支持游标的数据库性能提升巨大,比如说oracle,在mysql5.5以下的版本中没有PSCache功能,建议关闭掉,5.5及以上版本有PSCache,建议开启 -->
         <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}" />
    </bean>

</beans>

3. applicationContext-TransactionManager.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
    ">
    <!-- aspect注解生效,激活自动代理功能,如果不使用,可以删除此配置 -->
    <aop:aspectj-autoproxy proxy-target-class="true" />

    <!-- 配置事物管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
        <!-- 注入数据库连接池,mybatis的sqlSessionFactory中的配置需要与这里保持一致 -->
        <property name="dataSource" ref="dbcpDataSource" />
        <!-- <property name="dataSource" ref="c3p0DataSource" /> -->
        <!-- <property name="dataSource" ref="druidDataSource" /> -->
    </bean>

    <!-- 配置事物的传播特性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="create*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="find*" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="remove*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!-- 哪些类的哪些方法参与事物 -->
    <aop:config>
        <!-- 匹配指定包下(递归)所有类所有方法,返回值匹配任何情况 -->
        <aop:pointcut id="allManagerMethod" expression="execution(* com.qfx.*.*.services.impl..*.*(..))"/>
        <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
    </aop:config>
</beans>

4. SpringMVC主配置文件applicationContext.xml

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

    <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
    <context:component-scan base-package="com.qfx">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    <import resource="applicationContext-dataSources.xml"/>
    <import resource="applicationContext-TransactionManager.xml"/>

</beans>

原文地址:https://blog.51cto.com/1197822/2465488

时间: 2024-10-01 19:49:28

SpringMVC数据库连接配置大全的相关文章

DotNet,PHP,Java的数据库连接代码大全(带演示代码)

C#数据库连接字符串 Web.config文件 <connectionStrings> <!--SQLServer数据库连接--> <add name="conn_sqlserver" connectionString="server=127.0.0.1;uid=testuser;pwd=testPwd;database=db_test;pooling=true;min pool size=10;max pool size=1024;connec

jQuery Mobile的默认配置项详解,jQuery Mobile的中文配置api,jQuery Mobile的配置说明,配置大全

学习jQuery Mobile也有一段时间了,越来越上手了,也越来越喜欢他了.我根本就没有理由拒绝他的好.这里我有分享一下我对它的配置项的使用说明一下. 看代码解释: $(document).live("pageinit",function(event){ $.mobile.loadingMessage = "正在加载数据,请稍候......"; $.mobile.pageLoadErrorMessage="很抱歉,系统好像再打小瞌睡......"

ASA LAB-ASA NAT配置大全

ASA LAB-ASA NAT配置大全 两种NAT配置方式 : 1- Auto(object)NAT 2- Twice NAT NAT分类 : Static nat Dynamic nat Static PAT Dynamic PAT Nat exmption 今天抽空做了下八大类NAT的实验,这个文档比较常用,愿大家共同进步 实验: 先看下 ASA的基本配置和环境 ciscoasa# sh run : Saved : ASA Version 8.4(2) ! hostname ciscoasa

springMVC零配置吐槽

此时此刻,哥哥我不得不大大的吐槽一下.从github上down下来一个spring-mvc的chat演示样例,牛逼作者用的是注解的方式,项目全然零配置.而我眼下用的springMVC框架,还是在xml里面配置,所以,在用这个样例的时候,出现了一些小意外,比方,并不能非常好的与我如今的框架集成.天朝用springMVC框架的实在太少了,准确来说,是总结springMVC框架的大牛实在太少了.只是最后经过百般鼓捣,就在前一分钟,能用了,集成成功了.真尼玛幸福.springMVC零配置吐槽,布布扣,b

springmvc resources 配置

http://www.mkyong.com/spring-mvc/spring-mvc-how-to-include-js-or-css-files-in-a-jsp-page/ 如果<mvc:resources mapping="/resources/**" location="/resources/mytheme/" />注意location是Webroot目录下面的文件夹则<link href="${pageContext.requ

数据库连接字符串大全

以下内容均为转载未经验证. 原文地址 http://www.cnblogs.com/daview/archive/2004/04/10/5763.aspx 很感谢creativepeter(头皮屑)提供的本连接地址(http://www.connectionstrings.com/) SQL Server ODBC  Standard Security: "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"

mybatis学习笔记(三)-- 优化数据库连接配置

原来直接把数据库连接配置信息写在conf.xml配置中,如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration&

Springmvc中配置Quartz使用,实现任务实时调度。

菜鸡的自我修炼,第一次接触quartz,做个记录.-------jstarseven 最近在项目中,第一次在springmvc中配置实用quartz,深刻的感受到quartz带来的方便,顺手做个记录. 简单介绍: Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz 允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联.整合了 Quartz 的应用程序可以重用来自不同事件的作业,

springmvc+mybatis配置

环境: Jdk 1.8.0_40 Eclipse 4.4.2 Tomcat 8.0.20 Maven 3.2.5 Mybatis 3.2.8 Spring 4.1.5 主要步骤:(以下能够正常运行) 1. 新建工程 Maven Project -> New Maven Project 保持默认,直接下一步 -> 选择org.apache.maven.archetypes,点击下一步 -> 输入Group id 和Artifact id,完成 2. 配置pom.xml <projec