您现在的位置是:亿华云 > 热点
Spring框架中的Singleton和Prototype Bean作用域
亿华云2025-10-03 20:21:42【热点】1人已围观
简介来源:小技术君Spring框架是依赖注入的事实上的框架,在开发可扩展、弹性和安全的云原生环境中具有良好的记录。在使用Spring Beans时,初学者经常会对Spring beans和它们的作用域感到
来源:小技术君
Spring框架是框架依赖注入的事实上的框架,在开发可扩展、中的n作弹性和安全的用域云原生环境中具有良好的记录。
在使用Spring Beans时,框架初学者经常会对Spring beans和它们的中的n作作用域感到有些困惑。
以下是用域我对Singleton和Prototype Bean作用域的简单示例进行阐述的尝试。
Singleton Bean作用域:正如其名称所示,框架作用域为Singleton的中的n作beans在Spring应用程序上下文中只有一个实例可用,然而值得注意的用域是,同一bean在Spring常量中可以具有不同的框架Bean名称下拥有多个实例。
这个想法与_Singleton设计模式_的中的n作概念有些不同,后者表示一旦将Java类设计为单例,用域JVM将在内存中只有单个实例可用。框架
Illustration 1.0 下面的中的n作插图显示了一个账户服务Spring bean,源码库该bean可以具有不同的用域名称,同一服务在Spring上下文中可以存在两个不同的名称。

当我们在Java应用程序中引用一个singleton类时,该类只有一个实例可用,然而在Spring中,Singleton并不意味着上下文中只有一个该类型的实例,它可以有多个具有不同名称的该类型实例。
Prototype Bean作用域:当应用程序程序员将bean的作用域定义为Prototype时,这意味着每次有人请求引用一个bean时,Spring框架会返回全新的bean实例。Spring框架管理对象类型。
Illustration 1.1: 下面的插图定义了一个Prototype作用域的bean,并解释了每次我们请求Spring时,Spring都会提供所请求的bean的新实例。

为什么要让一个bean具有Prototype作用域?
Prototype作用域是为了避免两个线程在访问Singleton Bean时出现竞争条件。由于多线程环境的交错性质,这是一个经典的并发问题,操作的结果是亿华云不可预测的。因此,为了确保每个线程都获得自己的bean副本,开发人员希望确保每个线程都获得自己的副本。
什么是竞争条件?
以股票应用程序为例。股票价格每秒钟更新一次,并且用于为特定股票ID更新股票价格的代码是在并发上下文中编写的,这意味着可能有多个调用者试图更新股票X的价格。考虑一个一系列步骤的情况:
1.Mike试图将股票X的价格更新为110美元。2.Mike读取股票X的价格并将其增加到120美元。3.与此同时,在Mike将此写入主内存之前,他去了洗手间。4.Bob拿着咖啡回来,看到屏幕上的旧股票价值为105,他将股票X的价值更新为125美元。5.Mike回来,然后将股票X的值再次更新为120美元。6.由于这个构造,网站模板Mike想要对股票X进行的更新对Bob是不可见的,他再次覆盖了它。7.这是典型的竞争条件,我希望每个人都理解,就像Mike和Bob可以在这里被线程A和线程B替换一样,在并发环境中。
如果StockPrice被定义为Prototype作用域的bean,则每个线程都会获得其自己的StockPrice副本,它们不会互相干扰。但是,获得Stock价格的不同副本并不消除对给定股票的Stock价格更新进行同步的需要,它需要在一系列原子步骤中完成,但为了避免复杂性,我们可以略过这个讨论,以便理解Prototype Bean作用域。
Illustration 1.2: 下面的插图定义了一个Prototype作用域的bean,并解释了每个线程都会获得Prototype bean的新实例。

总结:
1.默认情况下,Spring bean的作用域是Singleton。2.Singleton作用域的bean在Spring应用程序上下文中可以具有不同的名称下的多个实例。3.Prototype bean是Spring框架提供的一个约定,每次请求时都会由框架提供bean的新实例。4.Prototype作用域的bean可以用于Singleton作用域的bean,但应该注意我们如何从上下文中获取该bean,因为如果将Prototype bean定义在Singleton bean内部,则Spring提供的原型bean实例只会有一个,这违背了其自身的目的。5.为了避免竞争条件,可以使用Prototype Bean作用域。
很赞哦!(54867)
下一篇: 戴尔科技集团打造现代化数据安全方案
相关文章
- 戴尔PowerProtect Cyber Recovery与企业携手,共同捍卫数据安全
- 因为域名解析需要同步到DNS根服务器,而DNS根服务器会不定时刷,只有DNS根服务器刷新后域名才能正常访问,新增解析一般会在10分钟左右生效,最长不会超过24小时,修改解析时间会稍微延长。
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 3、查看排名
- Synergy:云计算浪潮下本地数据中心容量仍在增长,部分企业开始遣返云端负载
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- 要如何了解反向解析和域名解析?新手该怎么去操作?
- 4.域名的整体品牌营销力
- 戴尔科技助力企业AI走可持续发展之路
- 审核通过的域名将显示在域名竞拍页面,并进入正式拍卖期,买家可以在拍卖周期内出价,加价幅度与拍卖保证金说明,点此查看。
热门文章
站长推荐
五个容易被忽视的物理数据中心安全威胁
互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。
有了戴尔Precision 5570工作站 音效师可随时随地开展工作
四、一定要仔细阅读细节
2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
要如何了解反向解析和域名解析?新手该怎么去操作?