请教一个spring和mybatis整合运用事务的一个问题,这是bean.xml
利用aop切面在执行包com.ly下任何类的任何方法开始事务,如配置当执行fun2,delete,update都会开始事务,然后在测试方法中,
先在fun创建 ApplicationContext加载bean.xml然后运行fun1,接着运行fun2应该开启事务,然后fun2中的update和delete理应都开启事务,在bean.xml中propagation="REQUIRED",所以这三个方法应该是同一个事物吧,然后我在delete代码中故意写错让其报错,所以理论update应该更新不了,但是还是更新了

解决方案 »

  1.   

    不知道你具体的项目结构,认为应该是使用的jdk动态代理实现的事务,在jdk动态代理的情况下对象内部调用不是通过反射的方式,故事务无法开启,如果必须这样调用并需要开启事务的话使用cglib动态代理即可,即更改spring默认的动态代理方式。
      

  2.   

    你这个方法没有抛出异常,意思是你在update里面把异常捕获了吧?事物只有显示抛出异常才会回滚