我只是想知道,Spring框架中的Pointcut
如何在内部工作。它如何知道接下来要执行的方法(然后在方法执行之前/之后执行它的工作)?它以某种方式使用反射? 即使我将调试点放在Pointcut
定义中,调试器也不会触发它。Spring框架中的切入点如何在内部工作
4
A
回答
5
它通过代理您的预期方法来实现。对您的方法的调用被替换为对代理方法的调用。代理方法首先执行注解之前,然后调用您的原始方法,然后执行注解之后。
代理方法是syntetic,它没有出现在你的代码中,所以你不能添加断点。
0
那么我的理解是,这是一个编织过程。如果您认为您的切入点只是签名,它们可以灵活地从包,界面,类或方法甚至通配符中进行选择。
当你的应用程序加载春天排序产生的所有目标的代理,这就是为什么在我看来,它不是使用通配符,而不是适用于特定目标的好主意。在目标上创建代理的过程实际上是编织。
调试器不工作的原因是因为该类未被调用,而是由Spring创建的代理。是的,春天广泛使用反思。
我曾经试着将Aspects放在JAX-RS类上,但它失败了,因为Spring创建的代理没有被JAX-RS资源考虑,并且没有被解雇。
此外,我使用通配符,然后在任何异常的任何堆栈跟踪中,我可以看到堆栈跟踪中某处的Spring代理调用。
P.S它比知识更多的是观察。
相关问题
- 1. cairngorm框架如何在内部工作
- 2. Spring Data JPA如何在内部工作
- 3. Spring Boot Application如何在内部工作?
- 4. BeanPropertyRowMapper如何在Spring内部工作?
- 5. 依赖注入Spring框架 - 工作
- 6. Java集合框架的内部工作
- 7. Spring MVC的:在切入点
- 8. 如何在相位器框架工作中切换状态?
- 9. AOP在Spring Web MVC框架不工作
- 10. 如何内部框架
- 11. DAO类的spring单例作用域如何在内部工作
- 12. Spring AOP切入点
- 13. 如何自动迁移实体框架内部工作4.3
- 14. 如何从netbeans中的另一个内部框架打开内部框架
- 15. mvc如何在Zend框架中工作
- 16. 与Appengine一起工作的Spring框架的部分是什么
- 17. Spring框架入门
- 18. Java - Spring AOP切入点不起作用
- 19. 在Spring AOP中指定切入点
- 20. 在spring中使用批注切入点
- 21. SelectedValuePath的内部如何工作(在组合框/列表框上)?
- 22. 变量作用域如何在Mocha测试框架内工作?
- 23. 如何从切入点中排除匿名内部方法?
- 24. 如何使用spring框架工作检索mongodb的值
- 25. 在Spring框架内部ehcache.xml文件中外化terracottaconfig属性
- 26. 如何在Spring框架中使用ORM ...?
- 27. 如何在框架内插入表格?
- 28. 在rails框架内部调试Ruby on Rails框架内部
- 29. 如何跟踪我的内部框架?
- 30. 在工作中安排工作!框架
这只是基于AspectJ的编织(加载时间或编译时间)? –
@TeemuIlmonen不,通常是Spring Auto Proxies。您可以启用AspectJ,但通常自动代理是默认选择。 –
Spring将所有豆子放入单独的袋子(代理)并观察这些袋子之间的相互作用。 Spring不会考虑包包本身的相互作用。只有行李(代理)之间的呼叫被拦截,这是执行前后条款的时间。 – Palcente