<?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:p="http://www.springframework.org/schema/p"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 1.JPA的事物管理 器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!--2. 使用注解 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
<!--2. 定义事物通知 :声明式事物管理 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- propagation:设定事务定义所用的传播级别 -->
<tx:method name="find*" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 3.事物拦截切面配置 -->
<aop:config>
<!-- 指定切入点 和匹配表达式 -->
<aop:pointcut expression="execution(* com.*.service.impl.*.*(..))"
id="aopPointcut" />
<!-- 增强器:是切入点(pointcut)和advice 的适配器 -->
<!-- 指定在哪个Pointcut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="transactionAdvice" pointcut-ref="aopPointcut" />
</aop:config>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 1.JPA的事物管理 器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!--2. 使用注解 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
<!--2. 定义事物通知 :声明式事物管理 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- propagation:设定事务定义所用的传播级别 -->
<tx:method name="find*" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 3.事物拦截切面配置 -->
<aop:config>
<!-- 指定切入点 和匹配表达式 -->
<aop:pointcut expression="execution(* com.*.service.impl.*.*(..))"
id="aopPointcut" />
<!-- 增强器:是切入点(pointcut)和advice 的适配器 -->
<!-- 指定在哪个Pointcut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="transactionAdvice" pointcut-ref="aopPointcut" />
</aop:config>
</beans>