因为这个问题没有直接指向问题的地点, 所以找起来不是很容易.
但是如果找不到, 这个错就会一直都存在.
原因分析: 在使用切面编程的时候, 没有把切入点配置全面
解决方法: 在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();
}
}