2011-05-27 44 views
5

任何人都可以帮助我了解自定义范围。我通过手册和许多在线示例来了解它是如何实现的。但是,我仍然不清楚为什么我们需要一个自定义代理,为什么我们会去,限制了bean的范围。为什么我们会在春季使用自定义范围?何时需要?

据我所知,对于一个单例,我们使用单当我们想要一个bean必须考虑到所有引用&我们使用的原型时,我们希望每个bean被引用时被赋予了新的参考。

现在我对于自定义范围的理解是
定制Scope-我们使用自定义的范围,因为两者之间的中途既不是我们要通过每一次.. 单一的参考,也不是一个新的参考,但随后是更接近单身人士,我们每次都通过同一个bean,只是从我们的首选位置(例如底层threadlocal或map)传递。

请帮助我使我的概念清晰..这里的主要问题是为什么定制范围?什么时候需要?

回答

3

这实际上手头取决于问题。例如,你可能想创建一个预定义数量的特定bean的实例,但不会超过这个。因此,在这个数字被满足之前,你一直在创建新的实例,但是一旦符合这个数字,你就可以以平衡的方式返回现有的实例。

这可以被应用到该实例占用资源的显著量(例如,内存),但如果使用新的实例加速应用程序的问题。因此,您可以在需要时创建可用数量的新对象,并在实例数量超出该数量时将其委托到现有的对象中(降低资源利用率的性能)。

4

在不同的上下文中。例如 - 在Web应用程序中。这里定义了两个范围 - “请求”和“会话”。但是,这些有时是不够的。通常需要一个“闪光”范围(持续一个请求和随后的重定向)或“对话”范围(持续形成对话的一系列请求)。

在这样的和类似的情况下,使用定制的范围。

+0

感谢@Bozho用于解释恰当的例子问题,但我在Java EE的新手,只有春天的参考手册,作为我的春天的信息来源。你能否为这些范围的详细例子建议一些好的链接/参考文献/书籍。 – 2011-05-30 06:50:41

+0

并按照由勒芒给出的答案我的理解是:“我们使用自定义范围的性能问题(在应用上下文)”和关于网络的背景下 - 维护会话具体细节(每节范围), 处理相关信息到单个请求(范围每个请求) 和闪光和对话创建如您在回答 – 2011-05-30 06:56:11

+0

中提到的春季文档应该是足够的。 – Bozho 2011-05-30 07:11:39