gpt4 book ai didi

Spring AOP : What's the difference between JoinPoint and PointCut?

转载 作者:IT老高 更新时间:2023-10-28 13:01:28 24 4
gpt4 key购买 nike

我正在学习面向方面的编程概念和 Spring AOP。我无法理解切入点和连接点之间的区别——它们对我来说似乎都是一样的。切入点是您应用建议的地方,而连接点也是我们可以应用建议的地方。那有什么区别呢?

切入点的示例可以是:

@Pointcut("execution(* * getName()")

什么是连接点的示例?

最佳答案

Joinpoint:joinpoint 是应用程序程序执行中的一个候选点,可以插入一个方面。这个点可以是被调用的方法,被抛出的异常,甚至是被修改的字段。这些是可以将方面的代码插入到应用程序的正常流程中以添加新行为的点。

建议:这是一个对象,其中包括对系统范围内关注点的 API 调用,表示要在由点指定的连接点处执行的操作。

切入点:切入点定义应在哪些连接点应用相关的 Advice。建议可以应用于 AOP 框架支持的任何连接点。当然,您不想在所有可能的连接点上应用所有方面。切入点允许您指定希望应用建议的位置。通常,您使用显式的类和方法名称或通过定义匹配的类和方法名称模式的正则表达式来指定这些切入点。一些 AOP 框架允许您创建动态切入点,以确定是否根据运行时决策应用建议,例如方法参数的值。

下图可以帮助你理解Advice、PointCut、Joinpoints。 enter image description here

Source

餐厅类比解释: Source by @Victor

当您去餐厅时,您会查看菜单并看到几个可供选择的选项。您可以订购菜单上的任何一项或多项。但在您真正订购之前,它们只是“用餐机会”。一旦你下单,服务员就会把它送到你的餐 table 上,这就是一顿饭。

连接点是菜单上的选项,切入点是您选择的项目。

Joinpoint 是代码中的一个机会,您可以应用一个方面……只是一个机会。一旦您捕获这个机会并选择一个或多个连接点并将一个方面应用于它们,您就获得了一个切入点。

来源 Wiki :

A Joinpoint is a point in the control flow of a program where thecontrol flow can arrive via two different paths(IMO : that's why calljoint).

Advice describes a class of functions which modify other functions

A Pointcut is a matching Pattern of Joinpoint i.e. set of join points.

关于 Spring AOP : What's the difference between JoinPoint and PointCut?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15447397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com