'There is a type of Spring proxy that can replace the object being returned by the method' 是什么意思?

What is meant by 'There is a type of Spring proxy that can replace the object being returned by the method'?

我正在进行模拟考试,我不太理解其中一个答案,但没有解释为什么它是正确的。

(由 kriegaex 从此处向下编辑,添加了以下评论中的问题以及一些格式和改写,以使文本更加连贯和可读。)

我了解Spring AOP 可以使用两种类型的代理:

据我了解,这些是 Spring 中大量使用的两种代理类型。例如,当使用 @Transactional 或创建方面 (@Aspect) 时。

我对给出的答案的理解是他们指向@Around方面。但是,我不明白为什么他们称它为 "type of Spring proxy"。方面是代理吗?因此,我对使用 JDK 或 CGLIB 代理的方面的理解是否不正确?

如果您提供了所有可能的答案,包括不正确的答案,问题会更容易理解。但鉴于正确的(这听起来确实很奇怪),我可以告诉你以下内容:

  • JDK 和 CGLIB 代理都有相同的目的:包装和替换原始对象,以便能够将一些拦截器注册到它们的方法调用中,无论是通过 Spring AOP 还是其他方法。
  • 是的,两种代理类型都在 Spring 中大量使用,JDK 代理用于 类 实现接口,CGLIB 代理用于 类 不实现任何接口。或者,您可以配置 Spring 以将 CGLIB 代理也用于接口类型。
  • 没有“@Around 方面”这样的东西,只有 @Around 建议类型(除了其他建议类型,例如 @Before@After)。
  • 不,方面不是代理。但是 Spring AOP 使用代理来实现其通过委托模式执行 AOP 的方式,这与不使用任何代理但使用直接字节码检测来实现其目标的 AspectJ 相反。

在 Spring 文档中查找更多信息。