springframeowrk中需要Bean作用域

springframeowrk中需要Bean作用域,spring,scope,javabeans,Spring,Scope,Javabeans,我已经读到,在Spring框架中声明bean作用域时有几种类型。然而,我不明白为什么我们需要几种类型。有人能用一些例子解释一下在Spring应用程序中使用Bean作用域的必要性吗 提前谢谢你 Spring控制反转容器(Ioc容器)在Spring应用程序中创建和管理Bean。对于每个声明的Spring Bean,我们可以提供元数据,指定应创建特定Bean的实例数量以及它们的寿命,即Bean的寿命 基本上,我们使用纯Java自行创建对象。我们创建对象的位置决定了它的生存期,例如,在方法中创建的对象在

我已经读到,在Spring框架中声明bean作用域时有几种类型。然而,我不明白为什么我们需要几种类型。有人能用一些例子解释一下在Spring应用程序中使用Bean作用域的必要性吗


提前谢谢你

Spring控制反转容器(Ioc容器)在Spring应用程序中创建和管理Bean。对于每个声明的Spring Bean,我们可以提供元数据,指定应创建特定Bean的实例数量以及它们的寿命,即Bean的寿命

基本上,我们使用纯Java自行创建对象。我们创建对象的位置决定了它的生存期,例如,在方法中创建的对象在方法返回后立即被销毁。但是对于Spring,v为我们创建bean,为了管理bean的生命周期,Spring使用bean的范围。它还为开发人员提供了覆盖默认范围(即“Singleton”)的灵活性

为什么我们需要几种类型

因为每个bean都有自己的生命周期。根据生命周期,其范围定义如下

singleton(默认)将单个bean定义的范围限定为每个springioc容器的单个对象实例

prototype将单个bean定义的范围限定为任意数量的对象实例

请求将单个bean定义限定为单个HTTP请求的生命周期;也就是说,每个HTTP请求都有自己的bean实例,该实例是在单个bean定义的后面创建的。仅在支持web的Spring应用程序上下文的上下文中有效

会话将单个bean定义的范围限定到HTTP会话的生命周期。仅在支持web的Spring应用程序上下文的上下文中有效

应用程序将单个bean定义限定到ServletContext的生命周期。仅在支持web的Spring应用程序上下文的上下文中有效

websocket将单个bean定义的范围限定到websocket的生命周期。仅在支持web的Spring应用程序上下文的上下文中有效

例如:

Singleton:控制器、服务、存储库等对象只需要在应用程序中存在一个实例

Prototype:像Student这样的对象,在每次创建新资源时可能需要创建的产品

剩下的是WebAware范围和自解释的