国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring為什么默認(rèn)是單例的?

這篇具有很好參考價(jià)值的文章主要介紹了Spring為什么默認(rèn)是單例的?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、五種作用域

二、單例bean與原型bean的區(qū)別

?三、單例Bean的優(yōu)勢與劣勢


一、五種作用域

1.singleton:

singleton是Spring Bean的默認(rèn)作用域,也就是單例模式。在整個(gè)應(yīng)用程序中,只會(huì)創(chuàng)建一個(gè)實(shí)例,Bean的所有請(qǐng)求都會(huì)共享這個(gè)實(shí)例。

2.prototype:

prototype表示原型模式,每次請(qǐng)求都將創(chuàng)建一個(gè)新的Bean實(shí)例。因此,在應(yīng)用程序中可以有多個(gè)實(shí)例,這些實(shí)例之間不會(huì)相互影響。

3.request:

request表示在HTTP請(qǐng)求范圍內(nèi)創(chuàng)建Bean實(shí)例。每次發(fā)出HTTP請(qǐng)求時(shí),都會(huì)創(chuàng)建一個(gè)新的Bean實(shí)例,這個(gè)Bean實(shí)例只能在當(dāng)前請(qǐng)求中使用。

4.session:

session表示在HTTP會(huì)話范圍內(nèi)創(chuàng)建Bean實(shí)例。在一次會(huì)話期間,只會(huì)創(chuàng)建一個(gè)Bean實(shí)例。如果在同一個(gè)會(huì)話期間發(fā)出多個(gè)請(qǐng)求,這些請(qǐng)求都將共享同一個(gè)Bean實(shí)例。

5.globalsession:

globalsession表示在全局HTTP會(huì)話范圍內(nèi)創(chuàng)建Bean實(shí)例。這個(gè)作用域只適用于基于portlet的Web應(yīng)用程序。對(duì)于其他類型的Web應(yīng)用程序,globalsession作用域與session作用域是相同的。

二、單例bean與原型bean的區(qū)別

如果一個(gè)Bean被聲明為單例的時(shí)候,在處理多次請(qǐng)求的時(shí)候在Spring容器里面只實(shí)例化出一個(gè)Bean,后續(xù)的請(qǐng)求都公用這個(gè)對(duì)象,這個(gè)對(duì)象會(huì)保存到一個(gè)map里面。當(dāng)有請(qǐng)求進(jìn)來的時(shí)候,會(huì)先從緩存(map)里查看有沒有,有的話直接使用這個(gè)對(duì)象,沒有的話才實(shí)例化一個(gè)新的對(duì)象,所以這是個(gè)單例的。但是對(duì)于原型(prototype)bean來說,當(dāng)每次請(qǐng)求進(jìn)來的時(shí)候直接實(shí)例化新的bean,沒有緩存以及從緩存查的過程。

Spring為什么默認(rèn)是單例的?

Spring為什么默認(rèn)是單例的?

?三、單例Bean的優(yōu)勢與劣勢

優(yōu)勢:

1、減少了新生成實(shí)例的消耗:新生成實(shí)例消耗包括兩方面,第一,Spring會(huì)通過反射或者cglib來生成bean實(shí)例,這都是消耗性能的操作,其次給對(duì)象分配內(nèi)存也會(huì)涉及復(fù)雜算法。

2、減少jvm垃圾回收?:由于不會(huì)給每個(gè)請(qǐng)求都新生成bean實(shí)例,所以自然回收的對(duì)象少了。

3、可以快速獲取到 bean:因?yàn)閱卫墨@取bean操作除了第一次生成之外其余的都是從緩存里獲取的,所以很快。

劣勢:

單例的 bean一個(gè)很大的劣勢就是他不能做到線程安全!??!由于所有請(qǐng)求都共享一個(gè) bean實(shí)例,所以這個(gè) bean要是有狀態(tài)的一個(gè) bean的話可能在并發(fā)場景下出現(xiàn)問題,而原型的 bean則不會(huì)有這樣問題(但也有例外,比如他被單例 bean依賴),因?yàn)榻o每個(gè)請(qǐng)求都新創(chuàng)建實(shí)例。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-472054.html

到了這里,關(guān)于Spring為什么默認(rèn)是單例的?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 我為什么不建議使用框架默認(rèn)的 DefaultMeterObservationHandler

    我為什么不建議使用框架默認(rèn)的 DefaultMeterObservationHandler

    個(gè)人創(chuàng)作公約:本人聲明創(chuàng)作的所有文章皆為自己原創(chuàng),如果有參考任何文章的地方,會(huì)標(biāo)注出來,如果有疏漏,歡迎大家批判。如果大家發(fā)現(xiàn)網(wǎng)上有抄襲本文章的,歡迎舉報(bào),并且積極向這個(gè) github 倉庫 提交 issue,謝謝支持~ 另外,本文為了避免抄襲,會(huì)在不影響閱讀的情

    2024年01月21日
    瀏覽(25)
  • SpringBoot數(shù)據(jù)源——為什么平時(shí)默認(rèn)線程池是Hikari

    本文主要對(duì)DataSourceAutoConfiguration類進(jìn)行講解,然后對(duì)這個(gè)類的注解做一個(gè)解釋,所以直接打開這個(gè)類,開始看…… ps:我用的版本是2.3.0.RELEASE 目錄 DataSourceAutoConfiguration類注解 @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) @ConditionalOnMis

    2024年02月06日
    瀏覽(56)
  • 什么是單例模式

    什么是單例模式

    所謂類的單例設(shè)計(jì)模式,就是采取一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例,并且該類只提供一個(gè)取得其對(duì)象實(shí)例的方法。 單例模式有兩種方式:1) 餓漢式 2) 懶漢式 演示 餓漢式 和 懶漢式 單例模式的實(shí)現(xiàn)。 步驟如下: 構(gòu)造器私有化 =》 防止其

    2024年02月12日
    瀏覽(18)
  • 4.14 tcp_tw_reuse 為什么默認(rèn)是關(guān)閉的?

    4.14 tcp_tw_reuse 為什么默認(rèn)是關(guān)閉的?

    開啟 tcp_tw_reuse 參數(shù)可以快速復(fù)用處于 TIME_WAIT 狀態(tài)的 TCP 連接時(shí),相當(dāng)于縮短了 TIME_WAIT 狀態(tài)的持續(xù)時(shí)間。 TIME_WAIT 狀態(tài)的持續(xù)時(shí)間是 60 秒,這意味著這 60 秒內(nèi),客戶端一直會(huì)占用著這個(gè)端口。端口資源是有限的,一般可以開啟的端口為32768-61000。 如果客戶端(主動(dòng)關(guān)閉連接

    2024年02月11日
    瀏覽(16)
  • git將文件或目錄添加進(jìn)了.gitignore文件,為什么不生效?

    如題,之所以將文件添加進(jìn)了.gitignore文件但不生效,是因?yàn)樵撐募呀?jīng)被add進(jìn)git倉庫了,已經(jīng)被git托管了,這時(shí)git就沒法ignore了。解決辦法是先用git rm --cached將這些文件從git倉庫中取消托管并提交,然后.gitignore文件才會(huì)生效。詳細(xì)見如下描述。 已經(jīng)添加到git倉庫中的文件,

    2024年02月03日
    瀏覽(24)
  • 什么是單例模式,如何在Java中實(shí)現(xiàn)單例?

    單例模式是一種創(chuàng)建對(duì)象的設(shè)計(jì)模式,它確保只有一個(gè)實(shí)例,并提供對(duì)該實(shí)例的全局訪問點(diǎn)。在Java中實(shí)現(xiàn)單例有懶漢式和餓漢式兩種方式。 懶漢式單例模式: 在懶漢式單例模式中,對(duì)象創(chuàng)建在第一次使用時(shí)才會(huì)被創(chuàng)建。例如,當(dāng)某個(gè)類第一次被實(shí)例化時(shí),JVM會(huì)在堆內(nèi)存中分

    2024年02月15日
    瀏覽(25)
  • 什么是 Spring?為什么學(xué)它?

    歡迎來到本篇文章!在這里,我將帶領(lǐng)大家快速學(xué)習(xí) Spring 的基本概念,并解答兩個(gè)關(guān)鍵問題:什么是 Spring,以及為什么學(xué)習(xí) Spring。 廢話少說,下面,我們開始吧! Spring 官方文檔:https://docs.spring.io/spring-framework/docs/5.2.24.RELEASE/spring-framework-reference/ 簡化我們的企業(yè)級(jí)應(yīng)用程

    2024年02月06日
    瀏覽(25)
  • 為什么pycharm遠(yuǎn)程連接服務(wù)器運(yùn)行時(shí)總會(huì)出現(xiàn)找不到文件或目錄

    為什么pycharm遠(yuǎn)程連接服務(wù)器運(yùn)行時(shí)總會(huì)出現(xiàn)找不到文件或目錄

    目錄 解決方法 為什么會(huì)出現(xiàn)這樣的問題 我們需要修改一個(gè)設(shè)置 具體步驟如下: 1、右下角點(diǎn)擊它,選擇interpreter setting ?2、進(jìn)入下圖界面,點(diǎn)擊箭頭所指位置,選擇show all 3、進(jìn)入下圖界面,選擇你要修改的python interpreter,點(diǎn)哪個(gè)??進(jìn)行修改 ? ?4、進(jìn)入下圖界面,默認(rèn)情況下

    2024年02月15日
    瀏覽(23)
  • Oracle21C:Windows版本的安裝、卸載、環(huán)境變量配置、避坑指南|ORA-12514|為什么安裝目錄沒有bin目錄

    Oracle21C:Windows版本的安裝、卸載、環(huán)境變量配置、避坑指南|ORA-12514|為什么安裝目錄沒有bin目錄

    安裝Oracle21C(點(diǎn)擊下載),因不得其法,各種報(bào)錯(cuò),導(dǎo)致不能正常使用Oracle。? 提示:版本是Oracle21C, 其他版本可能存在差異, 目前官網(wǎng)已更新到Oracle23C (進(jìn)官網(wǎng)后,向下滾動(dòng),可下載其他版本)。? 1)Oracle下載地址:官網(wǎng)下載頁面 2)navecat下載地址:navecate 3)sqlplus下載地

    2024年01月25日
    瀏覽(23)
  • android studio創(chuàng)建一個(gè)新的項(xiàng)目為什么默認(rèn)是kotlin語言而選擇不了java語言

    android studio創(chuàng)建一個(gè)新的項(xiàng)目為什么默認(rèn)是kotlin語言而選擇不了java語言

    關(guān)于android studio語言選擇的問題。 我在進(jìn)入android studio為什么創(chuàng)建一個(gè)新項(xiàng)目之后選擇不了java語言有什么辦法可以解決。 解決辦法:這個(gè)模式下選著一個(gè)Empty Activity模塊就可以使用java語言。 這對(duì)于剛剛接觸anaroid studio新手比較管用。 ?

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包