方式一

<!-- 用代理类对 TransactionManager进行组合切面事务管理 -->
	<tx:advice id="advice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" propagation="REQUIRED" read-only="true" />
			<tx:method name="select*" propagation="REQUIRED" read-only="true" />
			<tx:method name="load*" propagation="REQUIRED" read-only="true" />
			<tx:method name="get*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>
	<!-- 定义切面 -->
	<aop:config>
		<aop:pointcut expression="execution(*
		com.yjm.service.*.*(..))"
			id="point" />
		<aop:advisor advice-ref="advice" pointcut-ref="point" />
	</aop:config>
方式二

	<!-- =========================事务管理========================= -->
	<bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="get*">PROPAGATION_REQUIRED</prop>
				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="save*">PROPAGATION_REQUIRED</prop>
				<prop key="add*">PROPAGATION_REQUIRED</prop>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="create*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="remove*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="exit*">PROPAGATION_REQUIRED</prop>
				<prop key="copy*">PROPAGATION_REQUIRED</prop>
				<prop key="move*">PROPAGATION_REQUIRED</prop>
				<prop key="synch*">PROPAGATION_REQUIRED</prop>
				<prop key="clean*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>

	<bean id="autoproxy"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<value>*Service</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>



spring 代理事务管理 都是首先封装一个事务代理类 然后 切入要使用此类规则的service类。





<!-- 声明式容器事务管理 ,transaction-manager指定事务管理器为transactionManager -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="add*" propagation="REQUIRED" />

<tx:method name="get*" propagation="REQUIRED" />

<tx:method name="save*" propagation="REQUIRED" />

<tx:method name="*" read-only="true" />

</tx:attributes>

</tx:advice>


<aop:config expose-proxy="true">

<!-- 只对业务逻辑层实施事务 -->

<aop:pointcut id="txPointcut"

expression="execution(* com.sign.demo.service..*.*(..))" />

<!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice -->

<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />

</aop:config>