You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
6.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
<context:component-scan base-package="com.ischoolbar.programmer">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Component" />
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Repository" />
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Service" />
</context:component-scan>
<!-- 加载配数据源配置文件 db.properties -->
<context:property-placeholder location="classpath:config/db.properties" />
<!-- 配置 C3P0 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${datasource.connection.driver_class}"/>
<property name="jdbcUrl" value="${datasource.connection.url}"/>
<property name="user" value="${datasource.connection.username}"/>
<property name="password" value="${datasource.connection.password}"/>
<property name="minPoolSize" value="${datasource.connection.minPoolSize}"/>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="${datasource.connection.maxPoolSize}"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="${datasource.connection.maxIdleTime}"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="${datasource.connection.acquireIncrement}"/>
<!--JDBC的标准参数用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0则缓存被关闭。Default: 0 -->
<property name="maxStatements" value="${datasource.connection.maxStatements}"/>
<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
<property name="maxStatementsPerConnection"
value="${datasource.connection.maxStatementsPerConnection}"/>
<!--初始化时获取三个连接取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="${datasource.connection.initialPoolSize}"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod"
value="${datasource.connection.idleConnectionTestPeriod}"/>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts"
value="${datasource.connection.acquireRetryAttempts}"/>
<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留并在下次调用getConnection()的时候继续尝试获取连接。如果设为true那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false -->
<property name="breakAfterAcquireFailure"
value="${datasource.connection.breakAfterAcquireFailure}"/>
<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false -->
<property name="testConnectionOnCheckout"
value="${datasource.connection.testConnectionOnCheckout}"/>
<property name="checkoutTimeout" value="${datasource.connection.checkoutTimeout}"/>
<property name="testConnectionOnCheckin"
value="${datasource.connection.testConnectionOnCheckin}"/>
<property name="automaticTestTable" value="${datasource.connection.automaticTestTable}"/>
<property name="acquireRetryDelay" value="${datasource.connection.acquireRetryDelay}"/>
<!--自动超时回收Connection-->
<property name="unreturnedConnectionTimeout" value="${datasource.connection.unreturnedConnectionTimeout}"/>
<!--超时自动断开-->
<property name="maxIdleTimeExcessConnections" value="${datasource.connection.maxIdleTimeExcessConnections}"/>
<property name="maxConnectionAge" value="${datasource.connection.maxConnectionAge}"/>
</bean>
<!-- 事务管理器 JDBC -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 启动声明式事务驱动 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- spring 通过 sqlSessionFactoryBean 获取 sqlSessionFactory 工厂类 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 扫描 po 包,使用别名 -->
<property name="typeAliasesPackage" value="com.ischoolbar.programmer.entity"></property>
<!-- 扫描映射文件 -->
<property name="mapperLocations">
<array>
<value>classpath:config/mybatis/mapper/admin/*.xml</value>
<value>classpath:config/mybatis/mapper/home/*.xml</value>
<value>classpath:config/mybatis/mapper/common/*.xml</value>
</array>
</property>
</bean>
<!-- 配置扫描 dao 包,动态实现 dao 接口,注入到 spring 容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ischoolbar.programmer.dao" />
<!-- 注意使用 sqlSessionFactoryBeanName 避免出现spring 扫描组件失效问题 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<bean id="gson" class="com.google.gson.Gson" scope="prototype"></bean>
</beans>