欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

什么是Spring的循環(huán)依賴

本篇文章給大家分享的是有關(guān)什么是Spring的循環(huán)依賴,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),瑯琊企業(yè)網(wǎng)站建設(shè),瑯琊品牌網(wǎng)站建設(shè),網(wǎng)站定制,瑯琊網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,瑯琊網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

1、解釋一下循環(huán)依賴的定義。

循環(huán)依賴其實是指兩個及以上bean相互持有對方,最終形成閉環(huán)的過程,一般聊循環(huán)依賴都是默認(rèn)的單例bean。直白一點解釋就是A依賴B,B依賴C,C又依賴A。ABC三者形成了一個閉環(huán),這就是循環(huán)依賴。

2、在Spring中有哪些循環(huán)依賴的場景?

(1)構(gòu)造器的循環(huán)依賴

這一種循環(huán)依賴的場景是沒辦法解決的。

 

@Service

public class A { 

    public A(B b) {  }

}

 

@Service

public class B { 

    public B(C c) { 

    }

}

 

@Service

public class C { 

    public C(A a) {  }

}

(2)setter的依賴注入

這種循環(huán)依賴的場景可以使用提前暴露對象的方式進(jìn)行解決。

<bean id="exampleBean" class="examples.ExampleBean">

    <!-- setter injection using the nested ref element -->

    <property name="beanOne">

        <ref bean="anotherExampleBean"/>

    </property>

 

    <!-- setter injection using the neater ref attribute -->

    <property name="beanTwo" ref="yetAnotherBean"/>

    <property name="integerProperty" value="1"/>

</bean>

 

<bean id="anotherExampleBean" class="examples.AnotherBean"/>

<bean id="yetAnotherBean" class="examples.YetAnotherBean"/>  

 

 

public class ExampleBean {

 

    private AnotherBean beanOne;

 

    private YetAnotherBean beanTwo;

 

    private int i;

 

    public void setBeanOne(AnotherBean beanOne) {

        this.beanOne = beanOne;

    }

 

    public void setBeanTwo(YetAnotherBean beanTwo) {

        this.beanTwo = beanTwo;

    }

 

    public void setIntegerProperty(int i) {

        this.i = i;

    }

}

3、描述一下Spring中Bean的生命周期。

(1)Spring啟動,查找并加載需要被Spring管理的bean,進(jìn)行Bean的實例化。

(2)Bean實例化后對將Bean的引入和值注入到Bean的屬性中。

(3)如果Bean實現(xiàn)了BeanNameAware接口的話,Spring將Bean的Id傳遞給setBeanName()方法。

(4)如果Bean實現(xiàn)了BeanFactoryAware接口的話,Spring將調(diào)用setBeanFactory()方法,將BeanFactory容器實例傳入。

(5)如果Bean實現(xiàn)了ApplicationContextAware接口的話,Spring將調(diào)用Bean的setApplicationContext()方法,將bean所在應(yīng)用上下文引用傳入進(jìn)來。

(6)如果Bean實現(xiàn)了BeanPostProcessor接口,Spring就將調(diào)用他們的postProcessBeforeInitialization()方法。

(7)如果Bean實現(xiàn)了InitializingBean接口,Spring將調(diào)用他們的afterPropertiesSet()方法。類似的,如果bean使用init-method聲明了初始化方法,該方法也會被調(diào)用

(8)如果Bean實現(xiàn)了BeanPostProcessor接口,Spring就將調(diào)用他們的postProcessAfterInitialization()方法。

(9)此時,Bean已經(jīng)準(zhǔn)備就緒,可以被應(yīng)用程序使用了。他們將一直駐留在應(yīng)用上下文中,直到應(yīng)用上下文被銷毀。

(10)如果bean實現(xiàn)了DisposableBean接口,Spring將調(diào)用它的destory()接口方法,同樣,如果bean使用了destory-method聲明銷毀方法,該方法也會被調(diào)用。

4、什么是三級緩存?

(1)第一級緩存:單例緩存池singletonObjects。

(2)第二級緩存:早期提前暴露的對象緩存earlySingletonObjects。

(3)第三級緩存:singletonFactories單例對象工廠緩存。

5、三級緩存和二級緩存的區(qū)別?

二級緩存只需要存儲beanName和提前暴露的bean的實例的映射關(guān)系即可;三級緩存不僅需要提前暴露的bean進(jìn)行返回,還要對該bean做BeanPostProcessor后置處理;三級緩存將暴露的bean處理完之后,將暴露的bean轉(zhuǎn)移到二級緩存,同時刪除三級緩存的數(shù)據(jù);三級緩存才是解決循環(huán)依賴的根本。

6、Spring是如何通過三級緩存來解決問題的?

對于單例對象來說,在Spring的整個容器的生命周期內(nèi),有且只存在一個對象,很容易想到這個對象應(yīng)該存在Cache中,Spring大量運(yùn)用了Cache的手段,在循環(huán)依賴問題的解決過程中甚至使用了&ldquo;三級緩存&rdquo;。singletonObjects指單例對象的cache,singletonFactories指單例對象工廠的cache,earlySingletonObjects指提前曝光的單例對象的cache。以上三個cache構(gòu)成了三級緩存,Spring就用這三級緩存巧妙的解決了循環(huán)依賴問題。

以上就是什么是Spring的循環(huán)依賴,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:什么是Spring的循環(huán)依賴
網(wǎng)站網(wǎng)址:http://chinadenli.net/article42/gehhhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、Google、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、網(wǎng)站收錄、網(wǎng)站策劃

廣告

聲明:本網(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)

成都網(wǎng)站建設(shè)公司