spring采用基于xml配置方式进行事务的处理
beans.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd "> <context:annotation-config></context:annotation-config> <!-- 利用spring提供的占位符的方式引用properties文件的数据 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- dbcp数据源配置 --> <bean id="dataSource" class=" org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClassName}"></property> <property name="url" value="${url}"> </property> <property name="username" value="${username}"></property> <property name="password" value="${password}"></property> <!-- 连接池启动时初始值 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池的最大值 --> <property name="maxActive" value="${maxActive}"></property> <!-- 最大空闲值。当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到 maxIdle为止 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 最小空闲值。当空闲的连接数少于阀值时,连接池就会预申请一些去连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="${minIdle}"></property> </bean> <!-- 采用spring来管理数据源的事务 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 使用@Transactional注解方式使用事务 <tx:annotation-driven transaction-manager="txManager"/> --> <bean id="personService" class="blog.service.impl.PersonServiceBean"/> <aop:config> <aop:pointcut expression="execution(* blog.service..*.*(..))" id="txPointcut"/> <aop:advisor advice-ref="txadvice" pointcut-ref="txPointcut"/> </aop:config> <tx:advice id="txadvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="get*" propagation="NOT_SUPPORTED"/> <tx:method name="*"/><!-- 其他方法采用默认配置 --> </tx:attributes> </tx:advice> </beans>