舉例:beanAssemble 項目
Bean的裝配,即Bean對象的創建。容器根據代碼要求創建 Bean 對象后再傳遞給代碼的過程,稱為Bean的裝配。
代碼通過getBean()方式從容器獲取指定的 Bean實例,容器首先會調用Bean類的無參構造器,創建空值的實例對象。
舉例:
當通過 Spring 容器創建一個 Bean 實例時,不僅可以完成 Bean 的實例化,還可以通過 scope 屬性,為 Bean 指定特定的作用域。Spring 支持 5 種作用域。
● singleton:單態模式。即在整個 Spring 容器中,使用 singleton 定義的 Bean 將是單例的, 只有一個實例。默認為單態的。
● prototype:原型模式。即每次使用 getBean 方法獲取的同一個的實例都是一個 新的實例。
● request:對于每次 HTTP 請求,都將會產生一個不同的 Bean 實例。
● session:對于每個不同的 HTTP session,都將產生一個不同的 Bean 實例。
注意:
● 對于 scope 的值 request、session 只有在 Web 應用中使用 Spring 時,該作用域才有效。
● 對于 scope 為 singleton 的單例模式,該 Bean 是在容器被創建時即被裝配好了。
● 對于 scope 為 prototype 的原型模式,Bean 實例是在代碼中使用該 Bean 實例時才進行 裝配的。
舉例:
可以為 Bean 定制初始化后的生命行為,也可以為 Bean 定制銷毀前的生命行為。
舉例:
首先,這些方法需要在 Bean 類中事先定義好:是方法名隨意的 public void 方法。
其次,在配置文件的標簽中增加如下屬性:
init-method:指定初始化方法的方法名
destroy-method:指定銷毀方法的方法名
注意,若要看到 Bean 的 destroy-method 的執行結果,需要滿足兩個條件:
● Bean 為 singleton,即單例
● 要確保容器關閉。接口 ApplicationContext 沒有 close()方法,但其實現類有。所以,可以將 ApplicationContext 強轉為其實現類對象,或直接創建的就是實現類對象。