通过创建多个应用程序上下文来使用Spring来管理bean的生命周期 - 这没关系吗?

时间:2009-07-16 10:04:33

标签: spring

我之前使用过Spring,但我不是专家,之前只用于标准的Web开发。

目前,我正在开发一个使用Spring的项目。它是一个独立的Swing应用程序,有许多显示器,用户可以通过工具栏在显示器之间切换。当显示更改时,需要销毁所有组件(垃圾收集)。

目前,这是通过将每个显示器关联的单独ApplicationContexts来完成的。因此,当显示更改时,想法是销毁与显示相关联的AppCtx,然后创建新的应用程序上下文(来自不同的XML文件)以在新显示中加载组件。

这是使用Spring的合适方式吗?我不太了解Spring Container的内部结构以及容器管理bean的方式,所以我无法弄清楚它是否是一件好事。

1 个答案:

答案 0 :(得分:1)

听起来我应该使用custom scope

  

从Spring 2.0开始,Spring中的bean作用域机制是可扩展的。这意味着您不仅限于Spring提供的开箱即用的bean范围;您可以定义自己的范围,甚至可以重新定义现有范围(尽管最后一个范围可能被认为是不好的做法 - 请注意,您不能覆盖内置的单例和原型范围)。

您的方法的问题主要是性能,因为您将在每次屏幕更改时解析/配置/定义/实例化spring bean。我建议您使用screen的自定义范围(比如说),它会为每个范围返回单独的对象。

请参阅Scope javadoc了解实施细节。