簡體   English   中英

避免spring cglib代理問題

[英]avoiding problems with spring cglib proxy

在spring中使用cglib代理會導致:

a)構造函數的雙重調用

b)不允許攔截從另一個方法調用的方法

但為什么spring創建一個bean然后代理? 是否可以動態生成擴展指定bean類的類,然后只調用一次構造函數? 這將解決a)和b)公共和受保護的方法。 我錯過了什么嗎?

好問題。 我認為這是由於Spring引導應用程序上下文的原因:它首先創建所有原始bean,然后應用后處理器,例如添加AOP(包括事務)。 這種分層架構需要先創建普通bean,然后再封裝它。 有人可能會認為這種方法遵循構成而不是繼承原則。

還要注意a)應該不是問題。 類不應該在構造函數中執行初始化,而是在@PostConstruct方法中執行 - 只調用一次。 另一方面,這導致了另一個問題:

c)不能使用CGLIB代理的構造函數注入,參見SPR-3150

但我明白你的沮喪。 猜猜唯一有效的解決方法是我們完整的AspectJ編織。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM