如何理解AOP中的切点和连接点

894 阅读1分钟

连接点不一定是切点,但切点一定是连接点。

说人话就是:比如在连接点(方法)上加 @Transactional ,那么该连接点(方法)就变成了切点,不加呢,它只是一个可以被添加切点的候选点。

在 AOP 中,切点(Pointcut)和连接点(Joinpoint)是两个重要概念。

切点(Pointcut):指定在何处应该应用通知(Advice),是 AOP 中一个重要的基本概念。切点指代的是那些被监听的方法,由于这些方法会触发通知,因此切点是用来精确指定何处的。

连接点(Joinpoint):指在应用程序执行过程中能够插入切面代码的点,比如方法的执行前或执行后等。实际上,一个连接点就是一个方法调用或者方法执行时的某个特定时刻。

连接点是程序执行过程中的一个特定点,例如方法调用、方法执行、异常捕获等等,它可以在这些特定点插入切面逻辑。而切点是对这些连接点进行选定和匹配的逻辑点,在切面编程中需要通过切点来实现对连接点的过滤和选择。

因此,每个切点都是一个连接点。每个连接点都可以成为切点的潜在候选对象,但不一定符合切点的匹配规则。例如,在方法执行前的连接点中,可能有多个方法,但只有符合切点表达式的方法才会被认为是切点。