永发信息网

spring 为什么 bean是单例

答案:1  悬赏:50  手机版
解决时间 2021-11-17 19:33
spring 为什么 bean是单例
最佳答案
1、Bean的简介
在Spring中,那些组成应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。
2、Bean的作用域
创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的“配方(recipe)”。把bean定义看成一个配方很有意义,它与class很类似,只根据一张“处方”就可以创建多个实例。
不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域。这样可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext)。
1)singleton
当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。
注意:Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置:

1



2)prototype
一个bean定义对应多个对象实例。Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
3)request
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:

1



针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。
4)session
在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:

1



针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例, 且该userPreferences bean仅在当前HTTP Session内有效。 与request作用域一样,可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
5)global session
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:

1



global session作用域类似于标准的HTTP Session作用域,不过仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
内蒙古辉腾锡勒草原怎样
《活着》第一章,第二章读后感
初学管工需要看一些什么书籍
作为一名饭店服务员遇到顾客刁难能怎么办??
风尚造型工作室地址在哪,我要去那里办事,
杏林哪个地方繁华
这种胆布的生产厂家在哪里?
老式12寸古董三洋彩电值钱么?
howareyou有哪两种形式
思字辈起名
生姜加冰糖有什么作用
那个。求个文,是快穿,其中有一个世界受是个
小轿车的速度是骑车速度的28倍,小轿车的速度
发热丝能用什么常见金属代替
中国建设银行南川支行这个地址在什么地方,我
推荐资讯
随草记的祁昕茶好不好?
南骏自卸车4100上牌需要多少钱
耐克像d样的圆圈标志是什么系列?
为什么美国队长翻译为Captain America
环形螺旋线(圆环形弹簧)的笛卡尔方程
常的繁体字怎么写的
针灸什么感觉?疼吗
长沙哪里有学西点培训
杭州311的末班车几点从余杭出发?
神粥七号粥铺的生意怎么样?
请问这三架飞机是什么航空?远处是国航吧,那
有没有人知道J20095581、J20095575指的是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?