原理 @Transcation和@Async注解都是基于aop动态代理实现的. 错误原因 当本类a方法调用b方法时,b方法上的注解就会失效,只有调用代理类才可以使注解生效 解决方法 方法1.将需要调用的方法编写到另一个类 方法2.在spring配置文件加入 <aop:aspectj-autoproxy expose-proxy="true"/> 使用 ((***Service)AopContext.currentProxy()).b(); 来调用