Spring三種例項化Bean的方法

2021-07-22 22:53:27 字數 2100 閱讀 4729

spring三種例項化bean的方法

1

1.例項化bean的三種方法:

(1) 構造器

對應類public personservicebean(string name, idaobean persondao)

sets:第乙個值

sets:第二個值

sets:第三個值

lists:第乙個值

lists:第二個值

lists:第三個值

:第乙個值

:第二個值

:第三個值

(2) 靜態工廠:

對應類public static personservicebean createinstance()

(3) 例項工廠:

沒有靜態方法,因此配置時,先例項化工廠,在例項化需要的bean。

對應類public personservicebean createinstance() 2

2. bean的作用域

預設情況為單例方式:scope=」singleton」

singleton

單例項作用域,這是spring容器預設的作用域,使用singleton作用域生成的是單例項,在整個bean容器中僅保留乙個例項物件供所有呼叫者共享引用。單例模式對於那些無會話狀態的bean(如輔助工具類、dao元件、業務邏輯元件等)是最理想的選擇。

prototype

原型模式,這是多例項作用域,針對每次不同的請求,bean容器均會生成乙個全新的bean例項以供呼叫者使用。prototype作用域非常適用於那些需要保持會話狀態的bean例項,有一點值得注意的就是,spring不能對乙個prototype bean的整個生命週期負責,容器在初始化、裝配好乙個prototype例項後,將它交給客戶端,隨後就對該prototype例項不聞不問了。因此,客戶端要負責prototype例項的生命週期管理。

request

session

global session 3

3. bean的生命週期

(1)什麼時候例項化?

對於單例的形式,在容器例項化的時候對bean進行例項化的。www.cdtarena.com

單例項可以通過lazy-init=」true」,在getbean時進行例項化。

在beans裡面default-lazy-init=」true」對所有bean進行延遲處理。

對於prototype,則是在getbean的時候被例項化的。

(2)在bean被例項化之後執行資源操作等方法:

init-method=」」

(3)在bean銷毀之前執行的方法:

destroy-method=」」

什麼時候被銷毀?隨著spring容器被關閉時被銷毀。

呼叫spring容器的close方法來正常關閉。以前是隨著應用程式執行完而關閉。

在spring裝載配置檔案後,spring工廠例項化完成,開始處理

(1)使用預設構造方法或指定構造引數進行bean例項化。

(2)根據property標籤的配置呼叫bean例項中的相關set方法完成屬性的賦值。

(3)如果bean實現了beannameaware介面,則呼叫setbeanname()方法傳入當前bean的id。

(4)如果bean實現了beanfactoryaware介面,則呼叫setbeanfactory()方法傳入當前工廠例項的引用。

(6)如果有beanpostprocessor與當前bean關聯,則與之關聯的物件的postprocess- beforeinitialzation()方法將被呼叫。

(7)如果在配置檔案中配置bean時設定了init-method屬性,則呼叫該屬性指定的初始化方法。

(8)如果有beanpostprocessor與當前bean關聯,則與之關聯的物件的postprocess- afterinitialzation()方法將被呼叫。

(9)bean例項化完成,處於待用狀態,可以被正常使用了。

(10)當spring容器關閉時,如果bean實現了disposablebean介面,則destroy()方法將被呼叫。

(11)如果在配置檔案中配置bean時設定了destroy-method屬性,則呼叫該屬性指定的方法進行銷毀前的一些處理。

(12)bean例項被正常銷毀。

spring 三種例項化bean

利用person類的無引數建構函式例項化person類 package com.spring public class person public person string name,int age public string getname public void setname string ...

spring三種例項化bean方法

1.用構造器來例項化的方式配置 id 標示 class 包名.類 name 標示 class 包名.類 類 和普通的沒有區別,這個是比較常用的 2.使用靜態工廠方法例項化的方式配置 配置檔案 demo class com.csdn.demofactory factory method getinst...

Spring 三種例項化Bean的方式

spring4共提供了三種例項化bean的方式,分別為構造器例項化 靜態工廠例項化 動態方法例項化,下面一一詳解 文章出自這裡!公用使用的實體 package com.gditc.test.domain 測試實體 author jiangi public class person public pe...