天天看點

spring中bean的生命周期

關于spring中bean的生命周期管理請參照下圖所示:

spring中bean的生命周期

一個bean在spring中要經曆如下生命過程:

(1)bean的建立

  容器尋找bean的定義資訊并将其執行個體化;

(2)屬性注入

  使用依賴注入,spring按照bean的定義資訊配置bean的所有屬性;

(3)beannameaware的setbeanname()

  如果bean實作了beannameaware接口,工廠調用bean的setbeanname傳遞bean的id;

(4)beanfactoryaware的setbeanfactory()

  如果bean實作了beanfactoryaware接口,工廠調用bean的setbeanfactory傳遞自身;

(5)beanpostprocessors的processbeforeinitialization()

  如果beanpostprocessors和bean關聯,那麼其postprocessbeforeinitialization()方法将被調用;

(6)initializingbean的afterpropertiesset()

  如果bean實作了initializingbean接口,那麼其afterpropertiesset()方法将被調用;

(7)bean自己定義的init-method

  如果bean的定義資訊中定義了init-method方法,那麼會執行bean自己的初始化方法;

(8)beanpostprocessors的processaafterinitialization()

  如果有beanpostprocessors和bean關聯,那麼其processaafterinitialization()方法将被調用;

到此時,bean就可以被應用系統使用了,并被儲存在beanfactory中直到它不再被使用。

有兩種方式可以把bean從beanfactory中删除:

a. 如果bean實作了disposablebean接口,destory()方法被調用。

b. 如果bean定義了destroy-method方法,則調用該方法。