這篇文章主要介紹“如何理解并掌握Spring Bean生命周期”,在日常操作中,相信很多人在如何理解并掌握Spring Bean生命周期問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解并掌握Spring Bean生命周期”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導向”的快速反應體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、app軟件開發(fā)公司、成都手機網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、成都服務器托管等實行標準化操作,讓客戶可以直觀的預知到從創(chuàng)新互聯(lián)可以獲得的服務效果。
這些 Spring Beans 是怎么生成出來的呢?
在正式回答這個問題之前,先解答一些有關(guān) Java Bean, Spring Bean 和 Spring IoC 容器這些概念性的疑惑,我希望通過下面這個例子形象說明這些問題:
小學生 (Java Bean)通過提交資料申請(元數(shù)據(jù)配置)加入了少先隊(Spring Ioc 容器),學習了一些精神與規(guī)定之后,變成了少先隊員(Spring Bean)
從這里可以看出,Java Bean 和 Spring Bean 都是具有特定功能的對象,小學生還是那個小學生,只不過加入了少先隊之后有了新的身份,新的身份要按照組織 (Spring Ioc)的規(guī)定履行特定義務
來看下圖加深一下了解 
首先要有容器,實例化 Spring Ioc 容器是非常簡單的,接口 org.springframework.context.ApplicationContext 表示Spring IoC容器,負責實例化,配置和組裝上述 bean。 容器通過讀取配置元數(shù)據(jù)獲取有關(guān)要實例化,配置和組裝的對象的指令。 配置元數(shù)據(jù)通常以XML,Java 注解或代碼的形式表示。 它允許你自己表達組成應用程序的對象以及這些對象之間豐富的相互依賴性,比如這樣:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring.xml", "spring1.xml"});有了容器,我們需要做哪些處理,使其內(nèi)部對象變?yōu)?
Ready for Use的狀態(tài)?
我們需要通過 Spring 容器實例化它們,Spring 為我們提供了三種方式:
Spring 為我們提供了 InitializingBean 接口
public interface InitializingBean {
void afterPropertiesSet() throws Exception;
}我們可以通過實現(xiàn) InitializingBean 接口,在其唯一方法 afterPropertiesSet 內(nèi)完成實例化的工作,但是 Spring Framework 官方并不建議我們通過這種方法來完成 Bean 的實例化,這是一種強耦合的方式,我們看到框架層面才會用到這個方法。
這種方式是 Spring 非常提倡的一種方式,我們通常將其標記在方法上即可,通常習慣將這個方法起名為 init()
@PostConstruct
public void init() {
System.out.println("Inside init() method...");
}你應該見過這種初始化方式:
public class MyClass {
public void init() {
// perform post-creation logic here
}
}
@Configuration
public class AppConfig {
@Bean(initMethod = "init")
public MyClass myclass() {
return new MyClass ();
}
}你也應該見過這種配置方式:
<bean id="myClass" class="com.demo.MyClass" init-method="init"/>
沒錯,這只是同樣功能的不同實現(xiàn)方式罷了 以上就是三種初始化 Spring Beans 的方式,我們在框架中看到過三種方式在組合使用,那么組合使用的調(diào)用順序是什么呢?
首先@PostConstruct 會被最先調(diào)用
其次 InitializingBean.afterPropertiesSet() 方法將會被調(diào)用
最后調(diào)用通過 XML 配置的 init-method 方法或通過設(shè)置 @Bean 注解 設(shè)置 initMethod 屬性的方法
了解了這些,你也就了解了 Spring Bean 是怎么來的了
通過圖示來說明一下: 
組合shying,這個調(diào)用順序很難記憶嗎嗎?
PostConstruct
(P),afterPropertiesSet(A),init-method(I)--->PAI (圓周率π)
BeanPostProcessor 接口,大家也應該有印象,里面只有兩個方法:
public interface BeanPostProcessor {
Object postProcessBeforeInitialization(Object var1, String var2) throws BeansException;
Object postProcessAfterInitialization(Object var1, String var2) throws BeansException;
}看方法名,BeforeInitialization 和 AfterInitialization,我們應該猜得出,這是在上述三種方式的前和后,算是一種全局的切面思想,我們經(jīng)常會使用 postProcessAfterInitialization 方法,通過讀取 Bean 的注解完成一些后續(xù)邏輯編寫與屬性的設(shè)定,現(xiàn)在 Ready for Use之前是這樣: 
在 Ready for Use 之前,了解這些內(nèi)容,已可以基本滿足日常的工作內(nèi)容,但這并不是 Ready for Use 的全部內(nèi)容,Spring Bean 整個生命周期的流程應該是這樣的,后續(xù)文章會逐步點亮: 
到此,關(guān)于“如何理解并掌握Spring Bean生命周期”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享標題:如何理解并掌握SpringBean生命周期
文章出自:http://www.chinadenli.net/article12/pisegc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、網(wǎng)站導航、外貿(mào)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)