AOP中Advisor和Aspect之间有什么区别?

Ruo*_*lin 8 java aop spring

我是Spring AOP的新手.基于我的理解,我注意到Advisor(例如DefaultPointcutAdvisor)和Aspect(例如注释的类@Aspect)都可以通过在调用方法时执行更多操作来帮助解决交叉问题.

请问这两个学期有什么不同?

Bra*_*raj 8

大多数方面是定义方面行为的建议和定义方面应执行位置的切入点组合.

Spring认识到这一点,并提供顾问,将建议和切入点合并到一个对象中.

更具体地说,这样PointcutAdvisor做.

public interface PointcutAdvisor {
   Pointcut getPointcut();
   Advice getAdvice();
}
Run Code Online (Sandbox Code Playgroud)

Spring的大多数内置切入点也有相应的PointcutAdvisor.如果您想在一个地方定义切入点及其管理的建议,这很方便.

阅读Spring in Action,第3版

Sanpshots

在此输入图像描述 在此输入图像描述


kri*_*aex 6

Advisor 似乎是 Spring 1.2 中定义横切关注点的一种古老的“AOP lite”类型,当时 Java 5 的使用仍然不太常见,因此 Spring 中未使用 @AspectJ 语法(通过 Java 注释)。对于基于模式的 AOP 而不是基于注释的 AOP 或纯 AspectJ 语法的爱好者来说,这个概念仍然存在,请参阅有关顾问的 Spring 文档

“顾问”的概念来自 Spring 中定义的 AOP 支持,在 AspectJ 中没有直接等效的概念。顾问就像一个独立的小方面,有一条建议。建议本身由一个 bean 表示,并且必须实现 Spring 中的建议类型中描述的建议接口之一。Advisor 可以利用 AspectJ 切入点表达式。