package com.homework.bean;
import org.springframework.beans.factory.*;
public
class
itemorder
implements
iitemorder
,initializingbean
}
package com.homework.bean;
public
class
itemorder
implements
iitemorder
}
在xml檔案中新增init-method:
"itemorder1"
class
="com.homework.bean.itemorder"
init-method
="init"
>
name
="numitems"
>
>
1value
>
property
>
name
="item"
>
bean
="item1"
/>
property
>
bean
>
工程啟動後就直接執行afterpropertiesset,spring總是先處理bean定義的initializingbean,後處理init-method。如果在spirng處理initializingbean時出錯,那麼spring將直接丟擲異常,不會再繼續處理init-method。
如果乙個bean被定義為非單例的,那麼afterpropertiesset和init-method在bean的每乙個例項被建立時都會執行。單例 bean的afterpropertiesset和init-method只在bean第一次被例項時呼叫一次。
struts2的action是多例項的,也即每次請求產生乙個action的物件。action類中往往包含了資料屬性,例如在頁面填寫的form表單的字段,action中有對應的的屬性來繫結頁面form表單字段。
springmvc預設是單例的。與action不同,springmvc的controller中不定義屬性,而是用方法的引數接收值,乙個方法結束形參就銷毀了,多執行緒訪問都會有一塊記憶體空間產生,裡面的引數也是不會共用的。
另:init-method是通過反射執行的,而afterpropertiesset是直接執行的。所以 afterpropertiesset的執行效率比init-method要高,不過init-method消除了bean對spring依賴。
package com.homework.bean;
import org.springframework.beans.factory.*;
public
class
itemorder
implements
iitemorder
,disposablebean
}
package com.homework.bean;
public
class
itemorder
implements
iitemorder
}
在xml檔案中新增destroy-method
"itemorder1"
class
="com.homework.bean.itemorder"
destroy-method
="mydestroy"
>
name
="numitems"
>
>
1value
>
property
>
name
="item"
>
bean
="item1"
/>
property
>
bean
>
Spring中Bean的初始化流程
spring中經典的9種設計模式 mybatis執行流程 通常乙個 xml 對映檔案,都會寫乙個 dao 介面與之對應,請問,這個 dao 介面的工作原理是什麼?dao 介面裡的方法,引數不同時,方法能過載嗎?id是否可以相同 spring bean 的初始化主要實現在bean.factory包下的...
Spring中的Bean的掃瞄 例項化 初始化
在spring啟動之後,個人暫時將spring注入bean物件的過程分為3個大的步驟,分別是 bean的掃瞄 bean的例項化 bean的初始化。第一步 bean的掃瞄 配置類掃瞄 配置檔案xml掃瞄 直接包路徑掃瞄 import org.springframework.context.annota...
Spring初始化Bean方法
一 總結 1 spring為bean初始化提供了兩種方式 2 實現initializingbean介面是直接呼叫afterpropertiesset方法,比通過反射呼叫init method指定的方法效率相對來說要高點。但是init method方式消除了對spring的依賴 3 如果呼叫after...