日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring bean相关

發布時間:2024/9/15 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring bean相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring中指定Bean的作用于的方式

以下四種為例:

  • 單例(默認,可以不用特殊表明)

    @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
  • 多例

    @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
  • session

    @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.INTERFACES)
  • request

    @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)

session和request類型的作用域時,如果需要將該對象注入到單例Bean中,需要指明代碼模式

ps: 如果注入的是接口類型的話:proxyMode使用INTERFACES即可,如果是時一個類時,則需要為TARGET_CLASS類型(這個表示使用CGLIB代理)

spring中 bean在什么時候創建的?

singleton(單例):只有一個共享的實例存在,所有對這個bean的請求都會返回這個唯一的實例。

此取值時表明容器中創建時只存在一個實例,所有引用此bean都是單一實例。如同每個國家都有一個總統,國家的所有人共用此總統,而這個國家就是一個spring容器,總統就是spring創建的類的bean,國家中的人就是其它調用者,總統是一個表明其在spring中的scope為singleton,也就是單例模型。

此外,singleton類型的bean定義從容器啟動到第一次被請求而實例化開始,只要容器不銷毀或退出,該類型的bean的單一實例就會一直存活,典型單例模式,如同servlet在web容器中的生命周期。

prototype(多例):對這個bean的每次請求都會創建一個新的bean實例,類似于new。

spring容器在進行輸出prototype的bean對象時,會每次都重新生成一個新的對象給請求方,雖然這種類型的對象的實例化以及屬性設置等工作都是由容器負責的,但是只要準備完畢,并且對象實例返回給請求方之后,容器就不在擁有當前對象的引用,請求方需要自己負責當前對象后繼生命周期的管理工作,包括該對象的銷毀。也就是說,容器每次返回請求方該對象的一個新的實例之后,就由這個對象“自生自滅”。

懶加載bean使用: @Lazy
一般情況下,Spring容器在啟動時會創建所有的Bean對象,使用@Lazy注解可以將Bean對象的創建延遲到第一次使用Bean的時候

Spring 為啥默認把設計成單例的?

熟悉spring開發的朋友都知道spring 提供了5種scope分別是singleton, prototype, request, session,global session。如下圖是官方文檔上的截圖,感興趣的朋友可以進去看看這五種分別有什么不同。今天要介紹的是這五種中的前兩種,也是spring最初提供的bean scope singleton 和 prototype。

spring 官方文檔介紹如下圖:

更多內容可以看官方文檔介紹,非常詳細:Spring bean作用域

  • 單例bean與原型bean的區別

    如果一個bean被聲明為單例的時候,在處理多次請求的時候在spring 容器里只實例化出一個bean,后續的請求都公用這個對象,這個對象會保存在一個map里面。當有請求來的時候會先從緩存(map)里查看有沒有,有的話直接使用這個對象,沒有的話才實例化一個新的對象,所以這是個單例的。但是對于原型(prototype)bean來說當每次請求來的時候直接實例化新的bean,沒有緩存以及從緩存查的過程。

1.畫圖分析

2.源碼分析

生成bean時先判斷單例的還是原型的

如果是單例的則先嘗試從緩存里獲取,沒有在新創建

結論:

1.單例的bean只有第一次創建新的bean 后面都會復用該bean,所以不會頻繁創建對象。

2.原型的bean每次都會新創建

單例bean的優勢

由于不會每次都新創建新對象所以有一下幾個性能上的優勢:
1.減少了新生成實例的消耗 新生成實例消耗包括兩方面,第一,spring會通過反射或者cglib來生成bean實例這都是耗性能的操作,其次給對象分配內存也會涉及復雜算法

2.減少jvm垃圾回收 由于不會給每個請求都新生成bean實例,所以自然回收的對象少了

3.可以快速獲取到bean 因為單例的獲取bean操作除了第一次生成之外其余的都是從緩存里獲取的所以很快

單例bean的劣勢

單例的bean一個很大的劣勢就是他不能做到線程安全!!!,由于所有請求都共享一個bean實例,所以這個bean要是有狀態的一個bean的話可能在并發場景下出現問題,而原型的bean則不會有這樣問題(但也有例外,比如他被單例bean依賴),因為給每個請求都新創建實例。

總結
Spring 為啥把bean默認設計成單例?
答案:為了提高性能!!!從幾個方面,1.少創建實例2.垃圾回收3.緩存快速獲取

總結

以上是生活随笔為你收集整理的Spring bean相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 绝顶高潮合集videos | 永久免费av无码网站性色av | 九色九一 | 国产a级淫片 | 五月天婷婷导航 | 一本久道久久综合无码中文 | 国产一区二区三区四区五区六区 | 亚洲精品乱码久久久久久9色 | 活大器粗np高h一女多夫 | 插插宗合网 | 青青草午夜 | 国产精品久久久亚洲 | 一级片一级 | 国产日韩一区二区三区 | 日韩欧美国产成人 | 无码人妻一区二区三区免费 | 中文字幕乱码无码人妻系列蜜桃 | 少妇av一区二区 | 久久av无码精品人妻系列试探 | 久久女同 | 亚洲乱妇老熟女爽到高潮的片 | 亚洲精品毛片av | 麻豆国产免费 | 精品久久人人 | 久久亚洲精品石原莉奈 | 午夜影院美女 | 国产精品久久久久电影 | 九九九热精品 | 日本黄色大片视频 | 色乱码一区二区三区在线男奴 | 日韩av综合网 | 天天看a | 国产亚洲精品成人av久久ww | 操操av| 先锋资源av | 日本欧美一区二区三区 | 黄色一级片免费在线观看 | 国产精品久久久网站 | 亚洲成人网页 | 国产视频aaa | 国产不卡免费视频 | 亚洲天堂网站在线 | 日本三级韩国三级三级a级按摩 | 精品人伦一区二区三区蜜桃免费 | 性色av免费 | 久热精品在线视频 | 日韩综合| 国产一页 | 97黄色片 | 手机看片国产 | 久久天堂网 | 男男黄色片 | 97久久免费视频 | 最近中文字幕一区二区 | 九九精品免费视频 | 鲁一鲁在线 | 色丁香久久 | av毛片在线看 | a视频免费看 | 日本福利一区二区三区 | 牛牛在线 | 美女隐私无遮挡 | 午夜剧场福利社 | 国产 日韩 欧美 制服丝袜 | 成人在线你懂的 | 亚洲精品自拍视频 | 精品www久久久久久奶水 | 激情五月亚洲 | 夜夜骚av一区二区三区 | 欧美成一区二区三区 | 久热超碰| 久草福利资源在线观看 | 亚洲精品一二三四 | 久久99婷婷 | 亚洲男人天堂2023 | 日本一道本在线 | 国产夫妻精品 | 国产精品久久久久久一区二区三区 | 就要操就要日 | 在线观看网站 | 日本不卡一区二区在线观看 | 亚洲免费av网 | 色婷亚洲| 黄视频在线观看免费 | 国产一区二区四区 | 污污视频在线免费看 | 欧美日韩一级黄色片 | 国产第一页在线 | 手机看片日韩国产 | 色av一区二区 | 少妇免费毛片久久久久久久久 | 国产精品手机在线 | 午夜在线观看av | 久久影院午夜理论片无码 | 国产视频久久久久久久 | 国产成人传媒 | 精品成人中文无码专区 | 九九三级 | 99久久久国产精品无码性 |