5

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

正如我所知,对于单例 - 当我们希望将单个 bean 提供给所有引用时,我们使用单例;当我们希望每次引用 bean 时都给出新的引用时,我们使用原型。

现在我对自定义范围的理解是
自定义范围 - 我们使用自定义范围作为两者之间的中间点,我们既不想传递单个引用也不想每次都传递新的引用......但是它更接近我们所在的单例每次都传递同一个 bean,只是从我们的首选位置(例如底层 threadlocal 或 map)。

请帮我弄清楚我的概念。这里的主要问题是为什么要自定义范围?什么时候需要?

4

2 回答 2

4

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

在这种和类似的情况下,使用自定义范围。

于 2011-05-27T21:43:02.250 回答
3

这实际上取决于手头的问题。例如,您可能希望创建特定 bean 的预定义数量的实例,但不要超过此数量。因此,在达到这个数字之前,您会继续创建新实例,但是一旦达到这个数字,您就会以平衡的方式返回现有实例。

这可以应用于实例占用大量资源(例如内存)但如果使用新实例会加速应用程序的问题。因此,您可以在需要时创建可行数量的新对象,并在实例数量超过该数量时委托给现有对象(在资源利用率方面牺牲性能)。

于 2011-05-28T07:38:02.533 回答