2016-08-16 56 views
0

是否有可能在Java中執行一個AspectJ建議,當目標對象超出範圍或被銷燬時執行該建議?Spring bean破壞時的Aspectj切入點

假設我們有一個類有一個切入點表達式匹配的各種方法,並且已經實現了緩存方面,這樣所有方法調用的響應都被緩存了。緩存鍵是代理對象與方法簽名和參數的連接。當目標對象被銷燬時,我們想要使緩存無效。

任何人都可以分享我們如何在銷燬此對象時執行建議的詳細信息嗎?

回答

0

可能你指的是你的緩存方面here

您可以不僅保留對引用表示方法調用的字符串的引用,而且還引用對要調用的方法進行緩存的實際對象。這裏的重要部分是,您必須使用弱引用以避免相應的對象超出範圍。您可以收集WeakHashMap中的所有對象,並定期執行清理工作,負責從實際緩存中刪除不存在的對象。

更新:我不是一個Spring用戶,但也許也存在生命週期方法/在彈簧鉤,可當組件超出範圍或以其他方式結束其生命週期被解僱。