spring如何解決循環(huán)依賴 Spring如何解決循環(huán)依賴的問題?
Spring如何解決循環(huán)依賴的問題?Spring首先創(chuàng)建對象,將它們放置在緩存中,然后設(shè)置它們的屬性。例如,a和B相互依賴。首先,創(chuàng)建一個對象并將其放入緩存。在設(shè)置屬性時,我們發(fā)現(xiàn)它依賴于B。此時,我
Spring如何解決循環(huán)依賴的問題?
Spring首先創(chuàng)建對象,將它們放置在緩存中,然后設(shè)置它們的屬性。例如,a和B相互依賴。首先,創(chuàng)建一個對象并將其放入緩存。在設(shè)置屬性時,我們發(fā)現(xiàn)它依賴于B。此時,我們初始化B并設(shè)置B的屬性。我們發(fā)現(xiàn)它依賴于a,并且緩存中有對a的引用,盡管它尚未完全初始化。B初始化后,a可以得到B。這只是解決集合依賴,而不是構(gòu)造函數(shù)依賴。
隨便說,在一般的建筑設(shè)計中,上層是轉(zhuǎn)移到下層的,同一層和下層都不應(yīng)該轉(zhuǎn)移到上層。我們可以考慮設(shè)計中是否有問題。
希望對你有所幫助,如果有用,記得要喜歡哦,你也可以關(guān)注我,會分享一些技術(shù)文章的。
循環(huán)依賴解決辦法?
如果您詢問spring的循環(huán)依賴性,那么使用單例屬性注入模式的bean生成可以支持循環(huán)依賴性。因為spring創(chuàng)建bean模式,帶有屬性注入的singleton將緩存當(dāng)前構(gòu)建的bean,然后創(chuàng)建屬性bean。當(dāng)屬性bean被創(chuàng)建時,它將填充之前緩存的bean來完成bean的構(gòu)建
控制反轉(zhuǎn)和容器IOC只能用一個問題來描述這是一種編程思想。在理想狀態(tài)下,可以實現(xiàn)自動注射和生命周期管理。但在實際開發(fā)中,有時并不像新的那么方便。我主要遇到以下問題:
1。要編寫大量的配置和構(gòu)造函數(shù),這比新的更麻煩。特別是有些函數(shù)在整個項目中只需要使用一次,新的函數(shù)只需要完成一次,但是你需要使用依賴注入,或者寫配置
2。當(dāng)需要注入更多的類時,構(gòu)造函數(shù)真的和老太太的裹尸布一樣臭,一樣長。關(guān)鍵是以前用過的一些類現(xiàn)在不用了,你要手工清理構(gòu)造函數(shù),這比new
3麻煩多了,最重要的一點是有時候項目復(fù)雜的時候會遇到循環(huán)注入的問題,問題是A依賴B,B依賴C,C依賴CA.這種情況說明建筑的存在是不合理的。在這一點上,你可以重構(gòu)系統(tǒng),也可以不依賴依賴依賴注入,直接新來解決它。]所以,總之,依賴注入只是一種編程思想,先進,但不通用。從宏觀上講,就是要解決多人共同開發(fā)一個項目時,各個模塊可以相互獨立,減少相互之間的依賴和干擾。從微觀的角度看,有幾個類是密切相關(guān)的。雖然文件是獨立的,但是功能是集成的。在這個時候,脫鉤是沒有意義的。為什么不是新的?
因此,我個人理解依賴注入與引擎是一樣的。發(fā)動機由幾個主要部件組成。這些組件之間是解耦的,可以通過依賴注入來實現(xiàn)。對于單個組件的內(nèi)部部件和螺釘,必須使用依賴注入來實現(xiàn)它們。這比收益多一點。使用new來實現(xiàn)它們要方便得多。。。[挖鼻子][挖鼻子][挖鼻子][挖鼻子][挖鼻子
1??梢栽O(shè)置優(yōu)先級。例如,a的優(yōu)先級為1,B的優(yōu)先級為2。如果a在等待B的資源,而B也在等待a的資源,如果沒有設(shè)置優(yōu)先級,它們總是等待對方形成死鎖。在設(shè)置優(yōu)先級后,B將退出等待并將資源分配給a,這解決了循環(huán)依賴的問題。