我以前用过Spring,但我不是专家,以前只用它做过标准的web开发。
目前,我正在从事一个项目,在这个项目中,Spring的使用方式非常不同。这是一个独立的Swing应用程序,有许多显示,用户可以通过工具栏在显示之间切换。当显示发生变化时,所有组件都需要销毁(垃圾收集)。
目前,这是通过将单独的ApplicationContexts与每个显示器相关联来实现的。因此,当显示更改时,想法是与显示关联的AppCtx被销毁,然后创建一个新的应用程序上下文(从不同的XML文件),以便在新显示中加载组件。
这是使用Spring的合适方式吗?我对Spring Container的内部结构和容器管理bean的方式了解不多,所以我不知道这是不是一件好事。
发布于 2009-07-16 10:20:26
在我看来,你应该使用custom scope。
从Spring2.0开始,Spring2.0中的bean作用域机制是可扩展的。这意味着您不仅限于Spring提供的开箱即用的bean作用域;您可以定义自己的作用域,甚至可以重新定义现有作用域(尽管最后一种可能被认为是不好的做法-请注意,您不能覆盖内置的单例和原型作用域)。
您的方法的问题主要是性能,因为您将在每次屏幕更改时解析/配置/定义/实例化spring bean。我建议您使用screen的自定义作用域(比方说),它为每个作用域返回单独的对象。
有关实现的详细信息,请参阅Scope javadoc。
https://stackoverflow.com/questions/1136607
复制相似问题