这个问题有两种解决方案:
第一种:
通过给方法加上@Transactional注解并且给配置中加入事务扫描
<tx:annotation-driven transaction-manager="transactionManager"/>
第二种:
通过配置来实现事务的同步
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" read-only="false"
rollback-for="Exception" no-rollback-for="RuntimeException"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.RuntimeException" />
<tx:method name="update*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="select*" propagation="SUPPORTS"/>
<tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="Exception" />
<tx:method name="remove*" propagation="REQUIRED" read-only="false" rollback-for="Exception" />
<tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="Exception" />
<tx:method name="up*" propagation="REQUIRED" read-only="false" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<!-- 扫描需要配置的类 -->
<aop:config>
<aop:advisor advice-ref="transactionAdvice" pointcut="execution(* com.ha.service.*.*(..))"/>
</aop:config>