在Java Wicket 6中,我试图了解当页面或组件不再使用时,如何在该页面或组件中获得通知。
上下文是这样的:我有一个配置服务,它可以向其中添加侦听器,以便在配置更改/重新加载时发出通知。
显然,如果不再需要某个页面/组件,那么我应该将其作为侦听器从服务中删除,但我找不到通知的方式或事实。
onRemove()不会处理它,因为似乎没有在页面或页面中的组件上调用它,因为我没有显式删除任何内容。我只是让页面/组件漂浮在空中。
关于如何清理我的资源以确保我的侦听器列表/内存占用不会在一段时间内膨胀,你有什么想法吗?
我的页面是有状态的,顺便说一句(尽管我不确定它们是否需要自动柜员机)。配置服务通过@SpringBean注入到页面/组件中。
传播配置的一种可能方式是将其更新为使页面仅侦听,然后向包含的组件触发Wicket事件。这将减少服务的侦听器数量,但如果组件无论如何都有对配置服务的引用,然后被其他需要重新配置的组件告知,这感觉并不是很好。也许吧。
尽管如此,使用上面的解决方案,我仍然希望在不再需要时从侦听器列表中清除页面。
发布于 2017-12-07 18:47:28
通过使用@SpringBean,您不需要在页面/组件和实际服务实例之间进行硬引用()!
@SpringBean注入一个(可序列化的)代理,该代理具有从Spring的ApplicationContext查找Spring bean的逻辑。所以我觉得你其实没什么好清理的。
https://stackoverflow.com/questions/47692981
复制相似问题