Spring tomcat jdbc pool mybatis 集成配置


最近项目用到了Spring、Tomcat7自带的数据库连接池tomcat jdbc pool 、mybatis,现将三者集成的配置记录一下,以备不时之需。
所需的jar包:

spring框架需要的jar包(这里就不详细说了)
mybatis-3.1.1.jar
mybatis-spring-1.1.1.jar
mysql-connector-java-5.1.15-bin.jar
tomcat-jdbc.jar
tomcat-juli.jar

配置文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.        xmlns:p="http://www.springframework.org/schema/p" 
  5.        xmlns:aop="http://www.springframework.org/schema/aop" 
  6.        xmlns:tx="http://www.springframework.org/schema/tx" 
  7.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  8.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
  9.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 
  10.  
  11.     <!--tomcat jdbc pool数据源配置-->           
  12.     <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">   
  13.         <property name="poolProperties"> 
  14.             <bean class="org.apache.tomcat.jdbc.pool.PoolProperties">   
  15.                 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
  16.                 <property name="url" value="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"/>   
  17.                 <property name="username" value="root"/>   
  18.                 <property name="password" value=""/> 
  19.                 <property name="jmxEnabled" value="true"/> 
  20.                 <property name="testWhileIdle" value="true"/> 
  21.                 <property name="testOnBorrow" value="true"/>   
  22.                 <property name="testOnReturn" value="false"/>   
  23.                 <property name="validationInterval" value="30000"/>   
  24.                 <property name="validationQuery" value="SELECT 1"/>   
  25.                 <property name="timeBetweenEvictionRunsMillis" value="30000"/>   
  26.                 <property name="maxActive" value="100"/>   
  27.                 <property name="initialSize" value="10"/>   
  28.                 <property name="maxWait" value="10000"/>   
  29.                 <property name="minEvictableIdleTimeMillis" value="30000"/>   
  30.                 <property name="minIdle" value="10"/>   
  31.                 <property name="logAbandoned" value="false"/>   
  32.                 <property name="removeAbandoned" value="true"/>   
  33.                 <property name="removeAbandonedTimeout" value="60"/> 
  34.                 <property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"/>   
  35.             </bean>   
  36.         </property>   
  37.     </bean>   
  38.    
  39.     <!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了 --> 
  40.     <bean id="transactionManager" 
  41.           class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  42.         <property name="dataSource" ref="dataSource" /> 
  43.     </bean> 
  44.  
  45.     <!-- 定义拦截器,用来指定事务属性、级别和异常处理 --> 
  46.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">   
  47.         <property name="transactionManager" ref="transactionManager"></property>   
  48.         <property name="transactionAttributes">   
  49.             <props>   
  50.                 <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> 
  51.                 <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> 
  52.                 <prop key="delete*"> PROPAGATION_REQUIRED,-Exception</prop> 
  53.                 <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> 
  54.                 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> 
  55.             </props>   
  56.         </property>   
  57.     </bean> 
  58.      
  59.     <!-- 用来定义哪些类需要事务管理 spring事务动态代理类 BeanNameAutoProxyCreator 根据类名自动代理,接受表达式 -->   
  60.     <bean id="BeanProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">   
  61.         <property name="beanNames">   
  62.             <!-- 对类名以Service结尾的类进行代理 -->   
  63.             <value>*Service</value>   
  64.         </property>   
  65.         <!-- 对代理类进行加载拦截器(实现通知的过程) -->   
  66.         <property name="interceptorNames">   
  67.             <list>   
  68.                 <value>transactionInterceptor</value>   
  69.             </list>   
  70.         </property>   
  71.     </bean>   
  72.  
  73.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
  74.         <property name="configLocation" value="classpath:mybatis-config.xml" /> 
  75.         <property name="dataSource" ref="dataSource" /> 
  76.     </bean> 
  77.    
  78.     <bean id="authorityDao" class="com.hongdian.ithings.authoritymanagement.dao.AuthorityDaoImpl"> 
  79.         <property name="sessionFactory" ref="sqlSessionFactory"/> 
  80.     </bean> 
  81.    
  82.     <bean id="authorityService" class="com.hongdian.ithings.authoritymanagement.service.AuthorityServiceImpl"> 
  83.         <property name="authorityDao" ref="authorityDao"/> 
  84.     </bean> 
  85.      
  86.     <bean class="com.hongdian.ithings.authoritymanagement.common.SpringContext"></bean> 
  87.      
  88.     <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">   
  89.         <!--线程池活跃的线程数-->   
  90.         <property name="corePoolSize" value="5" /> 
  91.         <!--线程池最大活跃的线程数--> 
  92.         <property name="maxPoolSize" value="50" /> 
  93.         <!--任务队列的最大容量--> 
  94.         <property name="queueCapacity" value="5" /> 
  95.     </bean>   
  96.      
  97.     <bean id="authorityComponent" class="com.hongdian.ithings.authoritymanagement.communication.AuthorityComponent"> 
  98.         <property name="taskExecutor" ref="taskExecutor"/> 
  99.     </bean> 
  100.      
  101. </beans> 

相关内容