我之前使用过Spring,但我不是专家,之前只用于标准的Web开发。
目前,我正在开发一个使用Spring的项目。它是一个独立的Swing应用程序,有许多显示器,用户可以通过工具栏在显示器之间切换。当显示更改时,需要销毁所有组件(垃圾收集)。
目前,这是通过将每个显示器关联的单独ApplicationContexts来完成的。因此,当显示更改时,想法是销毁与显示相关联的AppCtx,然后创建新的应用程序上下文(来自不同的XML文件)以在新显示中加载组件。
这是使用Spring的合适方式吗?我不太了解Spring Container的内部结构以及容器管理bean的方式,所以我无法弄清楚它是否是一件好事。
答案 0 :(得分:1)
听起来我应该使用custom scope。
从Spring 2.0开始,Spring中的bean作用域机制是可扩展的。这意味着您不仅限于Spring提供的开箱即用的bean范围;您可以定义自己的范围,甚至可以重新定义现有范围(尽管最后一个范围可能被认为是不好的做法 - 请注意,您不能覆盖内置的单例和原型范围)。
您的方法的问题主要是性能,因为您将在每次屏幕更改时解析/配置/定义/实例化spring bean。我建议您使用screen
的自定义范围(比如说),它会为每个范围返回单独的对象。
请参阅Scope javadoc了解实施细节。