我知道这一定是有史以来最简单的问题,但作为AOP的新手,我无法理解它。
在其提到的文件中:
方面可以实现关注的模块化,例如跨越多种类型和对象的事务管理。
“关注点的模块化”听起来像是为更具体的程序制作更多方法,
“跨越多种类型和对象”对我来说听起来像这些方法是全局的并且能够从其他类访问,我几乎肯定这是不正确的。然而,单独提及类型和对象也让我有点困惑。
提前致谢
答案 0 :(得分:2)
Aspect 是关注,切入点和加入点的关联。
方法是加入点。
对象是类型的实例。
答案 1 :(得分:1)
Aspect通过配置而不是以编程方式向方法(或方法的所有类)添加行为。配置可以用XML或其他任何方式完成,但最好的例子是注释,例如你可以有一个方法:
@Audit
public Integer doSomething(String parameter) {
//Something is happening here
}
只需添加@Audit
注释即可添加记录输入参数,输出值和执行时间的行为。您可以通过创建拦截器并将拦截器应用于具有注释的方法来实现。这只是一个例子,你可以用它实现事务,缓存,断路器和许多其他的东西。
在你的拦截器中你有一个普通的方法,它把ProceedingJoinPoint作为参数(假设你使用的是AspectJ),它包含有关方法的信息,你可以在其上调用proceed()来实际调用方法,这样你就可以了在方法调用之前和之后,可能会更改参数或返回值,甚至可能根本不调用该方法(例如,在缓存的情况下)。
方面的一大好处是你可以编写一次拦截器,然后通过配置将行为添加到你想要的任何方法中非常容易。
P.S。 :当他们说类型和对象时,我认为您应该将其理解为接口和实现,就像您可以将行为添加到List的所有实现或仅添加到ArrayList。