是否可以在Java中执行AspectJ建议,该建议在目标对象超出范围或被销毁时执行?
假设我们有一个类,它具有与切入点表达式匹配的各种方法,并且已经实现了缓存方面,以便缓存所有方法调用的响应。缓存键是代理对象与方法签名和参数的串联。我们希望在销毁目标对象时使缓存无效。
当这个对象被销毁时,任何人都可以分享我们如何执行建议的细节吗?
答案 0 :(得分:0)
可能你指的是你的缓存方面here。
您不仅可以将引用保留在表示方法调用的字符串中,还可以保存引用要缓存的方法的实际对象。这里的重要部分是你必须使用弱引用,以免使相应的对象超出范围。您可以收集WeakHashMap
中的所有对象,并定期运行清理作业,负责从实际缓存中删除不存在的对象。
更新:我不是Spring用户,但也许Spring中还有生命周期方法/钩子,当组件超出范围或以其他方式结束其生命周期时,可以触发它。