因为这个问题没有直接指向问题的地点, 所以找起来不是很容易.
但是如果找不到, 这个错就会一直都存在.
原因分析: 在使用切面编程的时候, 没有把切入点配置全面
解决方法: 在before, after, after-returning的注解后面都加上pointCut()方法
@Aspect @Component("tranManager") public class TransactionManager { @Autowired @Qualifier("session") private Session session = null; private Transaction transaction = null; @Pointcut("execution(* com.bj186.crm.service.impl.*.*(..))") public void pointCut() { } @Before("pointCut()") //这里添加切入点 public void begin() { transaction = session.beginTransaction(); } @AfterReturning("pointCut()") //这里也必须添加 public void commit() { transaction.commit(); } @AfterThrowing("pointCut()") //不添加切入点编译不会报错, 但是运行时会报错 public void rollback() { transaction.rollback(); } }