首页天道酬勤configuration注解不生效,类worksheet的paste方法无效

configuration注解不生效,类worksheet的paste方法无效

张世龙 05-06 01:29 70次浏览

问题: package cn.SW.study.web.service.impl; import cn.SW.study.web.Dao.user mapper; import cn.SW.study.web.model.user; import cn.SW.study.web.service.userservice; importorg.spring framework.beans.factory.annotation.auto wired; importorg.spring framework.stereotype.service; importorg.spring framework.transaction.annotation.transactional; import java.util.Date; /** *用户业务类*/@ servicepublicclassuserserviceimplimplementsuserservice { @ autowiredusermapperusermapper; 公共语音添加信息() { addOne ); } @ transactionalpublicvoidaddone () { User record=new User ); record.setloginname('Tom ); Record.setpwd(111111 ); 记录. set mobile (13913913913 ); record.setusable(1; 记录. set createtime (new date ) ); user mapper.insert selective (记录; int i=1/0; //回滚测试事务}}直接从外部类调用addOne方法可以成功启用事务。

在这种情况下,如果addInfo方法没有事务注释,addOne方法有事务注释,并且执行addInfo调用addOne方法,则不会发生事务,并且测试数据异常

问题原因:默认情况下,大多数使用spring的事务处于使用代理的模式,代理实现的事务是有限的。 只有标记为公共方法的@Transactional有效。 只有当外部方法调用进程被代理拦截时,事务才有效。 这意味着,即使一个方法调用此对象的另一个方法,也必须通过代理类才能启用事务。

解决方法:请手动获取代理类,然后调用。 (((UserServiceImpl ) AopContext.currentProxy ) ).addOne ); 问题解决了。

萨德。

transactional注解失效原因,自定义注解的使用场景