Must set property 'expression' before attempting to match

因为这个问题没有直接指向问题的地点, 所以找起来不是很容易. 

但是如果找不到, 这个错就会一直都存在. 

原因分析: 在使用切面编程的时候, 没有把切入点配置全面

解决方法: 在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();
    }
}

猜你喜欢

转载自www.cnblogs.com/zjulanjian/p/10948754.html