日期:2014-05-18  浏览次数:20659 次

spring事物管理
我在写spring事物的时候配置注解方式可以使用,但是通过aop的扫描方式就添加不上事物,请问这是怎么回事,代码如下:

<!-- 注解方式配置事物 
 <tx:annotation-driven transaction-manager="transactionManager" /> -->
<!-- 非注解方式 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" />
<tx:method name="save*" />
<tx:method name="update*" />
<tx:method name="modify*" />
<tx:method name="edit*" />
<tx:method name="delete*" />
<tx:method name="remove*" />
<tx:method name="repair" />
<tx:method name="deleteAndRepair" />

<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="datagrid*" propagation="SUPPORTS" />

<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* sy.service..*impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>

------解决方案--------------------
<aop:pointcut id="transactionPointcut" expression="execution(* sy.service..*impl.*(..))" />
改成下面:
<aop:pointcut id="transactionPointcut" expression="execution(* sy.service..*impl.*.*(..))" />