我只是想知道,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