你能說說Spring框架中Bean的生命週期嗎?

2021-10-05 03:57:52 字數 3310 閱讀 7138

首先簡單說一下(以下為乙個回答的參考模板)

1、例項化乙個bean--也就是我們常說的new;

2、按照spring上下文對例項化的bean進行配置--也就是ioc注入;

3、如果這個bean已經實現了beannameaware介面,會呼叫它實現的setbeanname(string)方法,此處傳遞的就是spring配置檔案中bean的id值

4、如果這個bean已經實現了beanfactoryaware介面,會呼叫它實現的setbeanfactory(setbeanfactory(beanfactory)傳遞的是spring工廠自身(可以用這個方式來獲取其它bean,只需在spring配置檔案中配置乙個普通的bean就可以);

6、如果這個bean關聯了beanpostprocessor介面,將會呼叫postprocessbeforeinitialization(object obj, string s)方法,beanpostprocessor經常被用作是bean內容的更改,並且由於這個是在bean初始化結束時呼叫那個的方法,也可以被應用於記憶體或快取技術;

7、如果bean在spring配置檔案中配置了init-method屬性會自動呼叫其配置的初始化方法。

8、如果這個bean關聯了beanpostprocessor介面,將會呼叫postprocessafterinitialization(object obj, string s)方法;

注:以上工作完成以後就可以應用這個bean了,那這個bean是乙個singleton的,所以一般情況下我們呼叫同乙個id的bean會是在內容位址相同的例項,當然在spring配置檔案中也可以配置非singleton,這裡我們不做贅述。

9、當bean不再需要時,會經過清理階段,如果bean實現了disposablebean這個介面,會呼叫那個其實現的destroy()方法;

10、最後,如果這個bean的spring配置中配置了destroy-method屬性,會自動呼叫其配置的銷毀方法。

結合**理解一下

spring通常通過配置檔案定義bean。如:

這個配置檔案就定義了乙個標識為 helloworld 的bean。在乙個配置文件中可以定義多個bean。

有兩種方式初始化bean。

1、在配置文件中通過指定init-method 屬性來完成

在bean的類中實現乙個初始化bean屬性的方法,如init(),如:

public

class

helloworld

…… }

然後,在配置檔案中設定init-mothod屬性:

2、實現 org.springframwork.beans.factory.initializingbean介面

bean實現initializingbean介面,並且增加 afterpropertiesset() 方法:

public

class

helloworld implement initializingbean

…… }

那麼,當這個bean的所有屬性被spring的beanfactory設定完後,會自動呼叫afterpropertiesset()方法對bean進行初始化,於是,配置檔案就不用指定 init-method屬性了。

有三種方式可以得到bean並進行呼叫:

helloworld hw=

newhelloworld()

;new

(hw)

;bw.

setpropertyvalue

(」msg」,」helloworld」)

;system.out.

println

(bw.

getpropertycalue

(」msg」)

);

2、使用beanfactory

inputstream is=

newfileinputstream

(」config.xml」)

;xmlbeanfactory factory=

newxmlbeanfactory

(is)

;helloworld hw=

(helloworld) factory.

getbean

(」helloworld」)

;system.out.

println

(hw.

getmsg()

);

new

(」config.xml」)

;helloworld hw=

(helloworld) actx.

getbean

(」helloworld」)

;system.out.

println

(hw.

getmsg()

);1、使用配置檔案中的 destory-method 屬性

與初始化屬性 init-methods類似,在bean的類中實現乙個撤銷bean的方法,然後在配置檔案中通過 destory-method指定,那麼當bean銷毀時,spring將自動呼叫指定的銷毀方法。

2、實現 org.springframwork.bean.factory.disposeblebean介面

如果實現了disposeblebean介面,那麼spring將自動呼叫bean中的destory方法進行銷毀,所以,bean中必須提供destory方法。

你能說說你理解的資料庫規範嗎?

1 首先是工具,我們用的是 mysql資料庫,工具是workbench,這個工具是專門為mysql設計的資料庫建模工具,你可以用它進行設計和建立新的資料庫圖示,在windows上面我們大多用的是powerdesiger,在mac上用workbench目前來看還是挺好用的,無論是建立資料庫文件,er圖...

能說說Spring中都使用了哪些設計模式嗎?

spring ioc核心的設計模式的思想,就是工廠模式。spring本身就是乙個工廠,把所有的bean例項都給放在了spring容器裡 大工廠 如果你要使用bean,就找spring容器就可以了,你自己不用建立物件了 將物件的建立過程放在乙個factory工廠類裡,如果要使用的話,則通過該工廠類來直...

面試官 你能說說mysql的幾種日誌檔案嗎?

mysql底層是有三種日誌檔案 undo redo binlog,這裡我們是以innodb儲存引擎為例的,為什麼要牽扯去儲存引擎呢,因為undo redo是屬於innodb儲存引擎的,binlog才是屬於mysql server的日誌檔案 這裡我們通過sql語句 update student nam...