首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring框架中的Pointcut在内部是如何工作的

Spring框架中的Pointcut在内部是如何工作的
EN

Stack Overflow用户
提问于 2016-05-16 17:31:54
回答 2查看 292关注 0票数 4

我只是想知道,Spring框架中的Pointcut是如何在内部工作的。它如何知道下一步将执行什么方法(然后在该方法执行之前/之后执行它的工作)?它以某种方式使用反射了吗?即使我将调试点放在Pointcut定义上,调试器也不会命中它。

EN

回答 2

Stack Overflow用户

发布于 2016-05-16 18:28:34

它是通过代理你的方面方法来实现的。对您的方法的调用将替换为对代理方法的调用。代理方法首先执行before-Annotation,然后调用原始方法,然后执行after-Annotation。

proxy方法是syntetic方法,它不会出现在代码中,所以不能添加断点。

票数 5
EN

Stack Overflow用户

发布于 2016-05-16 19:36:10

我所理解的是,这是一个编织的过程。如果您认为切入点只不过是签名,那么它们可以灵活地从包、接口、类或方法甚至通配符中进行选择。

当您的应用程序加载Spring sort创建所有目标的代理时,这就是为什么在我看来,使用通配符不是一个好主意,而是应用于特定的目标。在目标上创建代理的过程实际上是编织的。

调试器不工作的原因是因为类没有被调用,它是由Spring创建的代理。是的,Spring广泛地使用了反射。

我曾经尝试将方面放在JAX-RS类上,但失败了,因为JAX-RS资源没有考虑Spring创建的代理,也没有触发建议。

我还使用了通配符,然后在任何堆栈跟踪中,在任何异常中,我都可以在堆栈跟踪中的某个地方看到Spring代理调用。

附言:与其说是知识,不如说是观察。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37250721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档