Spring:Bean的scope作用域案例講解以及Bean之間的依賴和繼承(3)

九八年的尾巴發表於2020-12-13

Spring的bean屬性scope作用域

scope:告訴spring,什麼時候產生新的bean,還是一直用單個bean,物件麼,可以一個或多個,怎麼去配置,這個就是scope的作用

singleton:單例,預設值

  • 呼叫getBean方法返回是同一個物件,例項會被快取起來,效率比較高 當一個bean被標識為singleton時候,spring的IOC容器中只會存在一個該bean
    在這裡插入圖片描述

測試
在這裡插入圖片描述

prototype:多例

呼叫getBean方法建立不同的物件,會頻繁的建立和銷燬物件造成很大的開銷

測試:同樣程式碼,修改bean的作用域為prototype
在這裡插入圖片描述

其他少用 (作用域 只在 WebApplicationContext)

  • request :每個Http請求都會建立一個新的bean
  • session: 每個Http Session請求都會建立一個新的bean
  • global session(基本不用)

Bean的繼承

兩個類之間大多數的屬性都相同,避免重複配置,通過bean標籤的parent屬性重用已有的Bean元素的配置資訊 繼承指的是配置資訊的複用,和Java類的繼承沒有關係。不要搞混了,只是屬性繼承

Step1:新增Video1演示繼承

和Video沒有什麼區別 只是加一條summary屬性

/**
 * 測試Bean屬性繼承
 */
public class Video1 {

    private int id;

    private String title;

    private String summary;
}

Step2:bean物件繼承

重複屬性不進行注入,只注入實體特有屬性,使用parent屬性指定繼承父類物件

    <bean id="video" class="net.jhclass.project.domain.Video" scope="singleton">
        <property name="id" value="9"/>
        <property name="title" value="測試Spring注入"/>
    </bean>

    <bean id="video1" class="net.jhclass.project.domain.Video1" scope="singleton" parent="video">
        <property name="summary" value="繼承注入summary"/>
    </bean>

Step3:測試
在這裡插入圖片描述

Bean的依賴

屬性依賴: 如果類A是作為類B的屬性, 想要類A比類B先例項化,設定兩個Bean的依賴關係

就是一個物件依賴另一個物件。一個先後順序的問題
在這裡插入圖片描述

相關文章