spring bean作用域之间有什么区别,spring五种bean作用域
00-1010 SingletonPrototypeRequestSession应用程序概述
00-1010scope用于声明容器中的对象应该在的受限场景或者对象的生存期,即容器在这些对象进入它们对应的作用域之前生成并组装这些对象,通常在这些对象不再受这些作用域限制后销毁这些对象。
Spring容器bean的作用域类型:
singleton:Spring IOC容器的单个对象实例的作用域默认为singletonprototype:对于声明有prototype作用域的bean定义,当容器收到该类型对象的请求时,每次都会针对请求者的请求重新生成一个新的对象实例:将单个bean定义限制在单个HTTP请求的生命周期内。也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义之后创建的。会话仅在Web感知的Spring ApplicationContext的上下文中有效:单个bean定义仅限于HTTP会话的生命周期。仅在Web感知的Spring ApplicationContext的上下文中有效的应用程序:单个bean定义仅限于ServletContext的生命周期。Web感知的Spring ApplicationContext的上下文中唯一有效的websocket:将单个bean定义为WebSocket的生命周期。仅在web感知的Spring ApplicationContext的上下文中有效。
00-1010配置中的bean定义可以看作是一个模板,容器会根据这个模板构造对象。但是根据这个模板
构造了多少个对象实例,以及这些构造的对象实例应该存在多久,是由容器根据bean定义的范围语义决定的。标记为具有singleton作用域的对象定义,Spring的IoC容器中只有一个实例,对这个对象的所有引用都将共享这个实例。在实例从容器中启动并因为第一个请求而初始化之后,它将一直存在,直到容器退出,也就是说,它与IoC容器具有几乎相同的“生存期”。
singleton的bean具有以下特征:1 .容器中只有一个共享实例对象,该类型bean上的所有依赖都引用这个单一实例;2.从容器开始到第一次请求实例化,只要容器没有被销毁或退出,这种类型的bean的单个实例将一直存在。
莱顿型豆的工作原理
00-1010容器将在每次收到对这种类型对象的请求时为请求者重新生成一个新的对象实例。因此,对于那些请求者不能共享的对象类型,它们的bean定义的范围应该设置为prototype。这样,每个请求者都可以得到自己对应的对象实例。
与其他作用域相比,Spring并不管理prototype Bean的整个生命周期,所以在Prototype的情况下,不会调用配置好的销毁生命周期回调,客户端代码必须清理Prototype作用域中的对象,释放prototype Bean持有的昂贵资源。
目录
Spring container将为当前请求的每个HTTP请求创建一个全新的请求处理器对象。当请求完成时,该对象实例的生命周期将结束。当10个HTTP请求同时进来时,容器会分别为这10个请求返回10个新的RequestProcessor对象实例,它们不会互相干扰。在不太严格的意义上,request可以看作是prototype的一个特例,除了场景更具体之外,在语义上是相似的。
概述
Spring container会为每个独立的会话创建自己的全新的UserPreferences对象实例,只是session作用域的bean实例可能比request作用域的bean实例有更长的生存期,没有太大的区别。
Singleton
Spring container通过为整个Web应用程序使用一次appPreferences Bean定义来创建AppPreferences Bean的新实例。这有点类似于Spring singleton bean,但在两个重要方面有所不同:它是每个ServletContext的单例,而不是每个Spring ApplicationContext的单例。
这篇关于了解春天的豆子范围的文章到此为止。关于SpringBean范围的更多信息,请搜索以前关于popular IT的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。