Spring 實戰 四 bean 的作用域

2021-09-11 21:11:33 字數 774 閱讀 2840

在預設的情況下,spring 上下文的所有 bean 都是作為單例存在的。 單例會保持一些狀態,物件會被汙染,有時重用時不安全的。

作用域:

單例(singleton):整個應用中,只建立 bean 的乙個例項

原型(prototype):每次注入或通過 spring 上下文獲取時都建立新的例項

會話(session):在 web 應用中,為每個會話建立乙個 bean 例項

請求(request):在 web 應用中,為每個請求建立乙個 bean 例項

使用 @scop 組合 @bean 和 @component(包括自註解,被 @component 註解的註解)。

在 xml 中,bean 標籤有對應的 socp 屬性。

就購物車功能而言,會話作用域最為合適。

scope_session 對於一次會話會建立新的例項。 proxymode 解決了將會話或請求作用域 bean 注入到單例 bean 中的問題。

實際注入時會注入目標 bean 的乙個**,使用時**會對其進行懶解析並將呼叫委託給會話作用域內正真的 bean。

scopedproxymode.inte***ce 指明目標類是乙個介面,注入時需使用 jdk 動態** scopedproxymode.target_class 指明目標類是類,注入時使用 cglib **

xml 中也提供了相應屬性:bean 元素的 scop 屬性,以及 bean 元素下的子元素 aop:scoped-proxy 。 通過 proxy-target-class 屬性指明目標 bean 是介面還是類。

Spring實戰 6 內部Bean

本篇文章講解了spring的通過內部bean設定bean的屬性。類似內部類,內部bean與普通的bean關聯不同的是 1 普通的bean,在其他的bean例項引用時,都引用同乙個例項。2 內部bean,每次引用時都是新建立的例項。鑑於上述的場景,內部bean是乙個很常用的程式設計模式。下面先通過前文...

spring實戰 條件裝配bean

在做大型專案時,我們的系統會有多個執行環境,如開發人員自己的本地環境dev,測試人員的測試環境sit,上線前的預生產環境pre,線上環境prd 在不同環境中我們可能需要不同的配置,如資料庫配置,mq配置等,在不同的環境都有相應的不同的配置,這時候我們需要根據不同的環境來建立不同的配置 強大的spri...

Spring實戰 6 內部Bean

本篇文章講解了spring的通過內部bean設定bean的屬性。類似內部類,內部bean與普通的bean關聯不同的是 1 普通的bean,在其他的bean例項引用時,都引用同乙個例項。2 內部bean,每次引用時都是新建立的例項。鑑於上述的場景,內部bean是乙個很常用的程式設計模式。下面先通過前文...