此文件中有dbcp、c3p0、druid三種配置方式mysql
#----------------數據庫鏈接基本配置--------------- #數據庫驅動 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
<?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>
<?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>
<?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>