精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

意料之中、要求3-5年的Leader,最后選了應(yīng)屆生

開發(fā) 前端
Spring無(wú)法解決構(gòu)造函數(shù)導(dǎo)致的循環(huán)依賴,是因?yàn)樵趯?duì)象實(shí)例化的過(guò)程中,構(gòu)造函數(shù)都是最早被調(diào)用的,那個(gè)時(shí)候?qū)ο筮€沒完成實(shí)例化,所以沒辦法注入一個(gè)尚未完成創(chuàng)建的對(duì)象。

閑談

大家好,我是了不起,前段時(shí)間,了不起在當(dāng)面試官,挑了許多人給leader去面談,最后可能是因?yàn)榘阎澳硞€(gè)想走的同事留了下來(lái)了,所以對(duì)新人沒有太多的要求,所以選了應(yīng)屆生。

感覺如果是這種情況,還是比較利好應(yīng)屆生的,不然有些業(yè)務(wù)比較特殊的活,需要有能力接下上一任的工作,對(duì)面試的人要求會(huì)非常的高,人也不好找,最后頭疼的也是我。

不提也罷,回歸正題,分享一道最近常用來(lái)面試1-2年工作經(jīng)驗(yàn)的人的面試題吧。

什么是Spring的循環(huán)依賴問(wèn)題

圖片圖片

在軟件開發(fā)的世界里,我們總是追求代碼的優(yōu)雅與高效。目前Java主流的SpringBoot、SpringCloud框架無(wú)疑是我們最好的幫手。它不僅簡(jiǎn)化了企業(yè)級(jí)應(yīng)用的開發(fā),還為我們提供了許多強(qiáng)大的功能。

比如依賴注入DI,但是,就像任何技術(shù)都有其雙刃劍的一面,依賴注入也不例外,Spring在進(jìn)行依賴注入時(shí)最常見的一個(gè)問(wèn)題——循環(huán)依賴。

舉例一個(gè)場(chǎng)景,我們有兩個(gè)Service類A和B,A類里有個(gè)a2方法需要調(diào)用了B類里的b1方法,B類里的b2方法需要用到A類里的a1方法。

圖片圖片

那么按照我們Java代碼的無(wú)腦編程,就會(huì)是下面的這個(gè)情況:

ServiceA的a2方法調(diào)用ServiceB里的b1方法。

@Service
public class ServiceA implements Service {

    @Autowired
    private ServiceB serviceB;
    
    @Override
    public void a1() {
        System.out.println("當(dāng)前是ServiceA的a1方法"");
    }
                           
    @Override
    public void a2() {
        System.out.println("這里將調(diào)用ServiceB的b1方法");
        serviceB.b1();
    }
}

同樣ServiceB的b2方法就調(diào)用ServiceA里的a1方法。

@Service
public class ServiceB implements Service{

    @Autowired
    private ServiceA serviceA;

    @Override
    public void b1() {
        System.out.println("當(dāng)前是ServiceB的b1方法");
    }

    @Override
    public void b2() {
        System.out.println("這里將調(diào)用ServiceA的a1方法");
        serviceA.a1();
    }
    
}

運(yùn)行結(jié)果

當(dāng)你運(yùn)行這個(gè)SpringBoot應(yīng)用的時(shí)候,會(huì)遇到一個(gè)錯(cuò)誤,錯(cuò)誤信息如下:

org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'serviceA': Requested bean is currently in creation: Is there an unresolvable circular reference?

拓展復(fù)習(xí)

還記得Bean的創(chuàng)建過(guò)程嗎?Spring 在啟動(dòng)時(shí)會(huì)根據(jù)配置文件或注解來(lái)創(chuàng)建和初始化所有的bean。這個(gè)過(guò)程可以分為幾個(gè)階段:

  1. 實(shí)例化(Instantiation):Spring 容器創(chuàng)建一個(gè)bean的實(shí)例。
  2. 屬性填充(Population of Properties):Spring 容器設(shè)置bean的所有屬性,包括依賴注入。
  3. 初始化(Initialization):Spring 容器調(diào)用bean的初始化方法(如 @PostConstruct 注解的方法或 InitializingBean 接口的 afterPropertiesSet 方法)。

現(xiàn)在我們有兩個(gè)bean:ServiceA 和 ServiceB,它們相互依賴對(duì)方。具體來(lái)說(shuō):

  • ServiceA 依賴 ServiceB
  • ServiceB 依賴 ServiceA

當(dāng)Spring嘗試創(chuàng)建 ServiceA 時(shí),它會(huì)發(fā)現(xiàn) ServiceA 需要 ServiceB。于是Spring開始創(chuàng)建 ServiceB。然而,在創(chuàng)建 ServiceB 的過(guò)程中,Spring 又發(fā)現(xiàn) ServiceB 需要 ServiceA。這時(shí),Spring 發(fā)現(xiàn)自己已經(jīng)在一個(gè)創(chuàng)建 ServiceA 的過(guò)程中,從而導(dǎo)致了一個(gè)循環(huán)依賴。

圖片圖片

好比這張圖一樣,把箭頭的方向可以理解成前提條件,是不是就一目了然了。彼此成為對(duì)方的前提條件。就好比,不考慮進(jìn)化論,究竟是先雞還是先蛋?

回歸正題

在開發(fā)中,一般遇到這個(gè)問(wèn)題,通常會(huì)使用@Lazy來(lái)解決。

@Service
public class ServiceB implements Service{

    @Autowired
    @Lazy
    private ServiceA serviceA;

    @Override
    public void b1() {
        System.out.println("當(dāng)前是ServiceB的b1方法");
    }

    @Override
    public void b2() {
        System.out.println("這里將調(diào)用ServiceA的a1方法");
        serviceA.a1();
    }
}

它一方面可以減少Spring的IOC容器在啟動(dòng)時(shí)的加載時(shí)間,一方面也可以解決Bean的循環(huán)依賴問(wèn)題。

但是這是在日常開發(fā)使用的時(shí)候的處理方法,面試的時(shí)候肯定不會(huì)就這么放過(guò)你。

所以我們?cè)诿嬖嚨臅r(shí)候遇到這個(gè)問(wèn)題,通常還會(huì)再多回答兩個(gè)方式。

Spring解決循環(huán)依賴必須是單例的Bean

這是一種依賴Spring提前暴露對(duì)象的方式來(lái)實(shí)現(xiàn)的。這種也叫半成品對(duì)象,通過(guò)對(duì)上面的學(xué)習(xí),我們知道了循環(huán)依賴的原因是因?yàn)樵趧?chuàng)建的時(shí)候需要引用到另一個(gè)正在創(chuàng)建的對(duì)象,通過(guò)暴露這種半成品對(duì)象,讓初始化的時(shí)候能夠解決循環(huán)依賴的問(wèn)題。

但是這種方式不能使用在原型對(duì)象的創(chuàng)建和初始化!背過(guò)面試題的都知道:

  1. 單例對(duì)象的特點(diǎn):

單例對(duì)象在整個(gè)容器生命周期內(nèi)只會(huì)被創(chuàng)建一次。

這種特性使得單例對(duì)象的依賴關(guān)系在容器啟動(dòng)時(shí)就已經(jīng)確定下來(lái),不會(huì)發(fā)生變化。

  1. 原型對(duì)象的特點(diǎn):

原型對(duì)象在每次請(qǐng)求時(shí)都會(huì)創(chuàng)建新的實(shí)例。

對(duì)于原型對(duì)象而言,每次創(chuàng)建新實(shí)例時(shí)都可能涉及到不同的對(duì)象實(shí)例,因此不能像單例那樣緩存并復(fù)用半成品對(duì)象。

不支持構(gòu)造函數(shù)注入

Spring無(wú)法解決構(gòu)造函數(shù)導(dǎo)致的循環(huán)依賴,是因?yàn)樵趯?duì)象實(shí)例化的過(guò)程中,構(gòu)造函數(shù)都是最早被調(diào)用的,那個(gè)時(shí)候?qū)ο筮€沒完成實(shí)例化,所以沒辦法注入一個(gè)尚未完成創(chuàng)建的對(duì)象。

因此,解決循環(huán)依賴的一種方式,就是避開構(gòu)造函數(shù)注入。

結(jié)論

上面的知識(shí)只是給你科普用的,不是讓你用來(lái)回答的。如果你實(shí)在不理解,那就背下面的吧!

  1. 重新設(shè)計(jì),徹底消除循環(huán)依賴(是一句廢話沒錯(cuò),但是面試得講一下)
  2. 改成非構(gòu)造器注入的形式,比如setter注入或者字段注入
  3. 使用@Lazy解決
責(zé)任編輯:武曉燕 來(lái)源: Java面試教程
相關(guān)推薦

2010-11-04 10:14:13

職場(chǎng)

2013-01-09 08:59:13

20122013iOS

2020-12-13 17:47:44

物聯(lián)網(wǎng)安全連接性IOT

2018-07-30 16:32:25

應(yīng)屆生認(rèn)知誤區(qū)

2010-10-28 11:15:13

求職

2021-05-12 13:56:05

手機(jī)華為蘋果

2025-07-18 09:50:26

2010-11-16 10:14:22

2009-04-01 08:31:47

索尼錄用應(yīng)屆大學(xué)生

2012-10-30 15:50:02

應(yīng)屆生團(tuán)隊(duì)就業(yè)

2009-11-24 10:45:01

2012-06-04 09:20:19

程序員

2009-03-25 09:15:33

面試騰訊趨勢(shì)

2015-10-26 14:29:54

服務(wù)器開發(fā)應(yīng)屆生

2009-02-01 15:40:07

2015-10-15 10:49:09

服務(wù)器開發(fā)虛擬化應(yīng)屆生

2013-07-01 12:19:00

大學(xué)生IT博客大賽IT博客大賽博客大賽

2010-12-15 15:28:40

職場(chǎng)

2018-03-08 14:39:40

華為速度業(yè)務(wù)

2025-11-12 17:10:51

AI數(shù)據(jù)人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

伊人五月天婷婷| 日本一区高清不卡| 国产精品成人网站| 美国一区二区| 色噜噜狠狠色综合中国| 一区二区精品在线| 好吊色一区二区| 丝袜亚洲另类丝袜在线| 久久天天躁日日躁| 在线观看国产免费视频| 福利一区视频| 亚洲一区二区三区四区在线| 欧美另类视频在线| 精品国产99久久久久久宅男i| 国产视频久久| 不卡av在线网站| 粉嫩av蜜桃av蜜臀av| 一级欧美视频| 色噜噜久久综合| 亚洲精品无码国产| 日韩子在线观看| 99精品视频免费在线观看| 国产精品99久久久久久人| 少妇影院在线观看| 日韩av有码| 亚洲第一av网| aaa一级黄色片| 亚洲第一会所| 午夜影院在线观看欧美| 亚洲天堂第一区| 3p在线观看| 国产午夜久久久久| 久久一区二区三区av| 亚洲欧美激情在线观看| 国模大尺度一区二区三区| 国产成人综合久久| 久久黄色精品视频| 中文亚洲欧美| 97欧美精品一区二区三区| 国产67194| 五月天综合网站| 最近2019年中文视频免费在线观看| 欧美肉大捧一进一出免费视频| 国产精品xnxxcom| 欧美日韩1区2区| www.99av.com| 在线观看精品| 在线视频一区二区免费| 人妻熟女一二三区夜夜爱| 2021中文字幕在线| 亚洲高清视频在线| 欧美中日韩在线| 波多野结衣中文在线| 亚洲综合一二区| 浴室偷拍美女洗澡456在线| 色开心亚洲综合| 国产欧美日韩精品a在线观看| 久久亚洲午夜电影| 国产69精品久久app免费版| 久久久国产精华| 亚洲春色在线| 欧美18hd| 亚洲午夜在线视频| 日韩免费一级视频| 欧美性xxx| 欧美色网一区二区| 国产一区二区在线观看免费视频| 91精品国产一区二区在线观看 | 亚洲天堂男人的天堂| 蜜桃av免费看| 成人网18免费网站| 精品国偷自产在线视频99| 精品自拍偷拍视频| 在线成人亚洲| 国产成人综合av| 国产婷婷在线视频| www.亚洲免费av| 欧美一区二区三区在线免费观看 | 亚洲婷婷国产精品电影人久久| 正在播放一区| 国内老司机av在线| 欧美午夜丰满在线18影院| 欧洲熟妇精品视频| 亚洲欧洲二区| 亚洲缚视频在线观看| 国产真实乱人偷精品人妻| 欧美国产一区二区三区激情无套| 免费不卡在线观看av| 国产成人精品a视频一区| 视频精品一区二区| 91最新在线免费观看| 午夜成人鲁丝片午夜精品| 日本一区二区免费在线观看视频 | 99综合在线| 国产精品福利在线| 性一交一乱一乱一视频| 久久只精品国产| 丰满女人性猛交| 僵尸再翻生在线观看| 欧美日产在线观看| 青青草视频播放| 99久久99久久精品国产片果冰| 欧美极品少妇xxxxⅹ裸体艺术 | 久久一区二区三区四区五区| 国产在线播放91| 凸凹人妻人人澡人人添| 中文字幕欧美一| 国产乱子伦农村叉叉叉| 精品一区二区三区亚洲| 亚洲新中文字幕| 国产无套粉嫩白浆内谢| 久久精品99国产国产精| 久久这里精品国产99丫e6| 国产黄a三级三级三级av在线看| 欧美视频一区二区三区…| 毛毛毛毛毛毛毛片123| 亚洲丝袜啪啪| 97欧美精品一区二区三区| 999久久久久久| 欧美激情一区二区三区四区| 欧美精品一区二区三区三州| 精品视频在线一区| 最近2019中文字幕一页二页| 伊人手机在线视频| 不卡的看片网站| 欧美做暖暖视频| 性欧美video另类hd尤物| 亚洲色图第一页| 日韩 欧美 中文| 成人免费的视频| 穿情趣内衣被c到高潮视频| 欧美videos粗暴| 国产一区二区三区在线观看网站| 日韩毛片在线播放| 国产成人啪免费观看软件| 一区中文字幕在线观看| 国产原创一区| 色视频www在线播放国产成人| 婷婷激情五月综合| 国产亚洲自拍一区| 国产一区视频免费观看| 亚洲涩涩av| 欧洲一区二区视频| 欧美孕妇孕交xxⅹ孕妇交| 天天色天天爱天天射综合| 国产伦精品一区三区精东| 国产精品观看| 国产精选一区二区| sis001亚洲原创区| 欧美精品一区二区三区四区| 精品在线免费观看视频| 成人污视频在线观看| 青青草国产免费| 美女视频亚洲色图| 9.1国产丝袜在线观看| 午夜激情在线视频| 欧美色道久久88综合亚洲精品| yy1111111| 先锋影音久久久| 日本免费高清一区二区| www.成人在线视频| 久久香蕉频线观| 亚洲成人久久精品| 精品久久久久久久久久| 91成年人网站| 久久99久久99精品免视看婷婷| 宅男av一区二区三区| 视频在线观看免费影院欧美meiju| 久久99国产精品自在自在app | 国产成人精品亚洲线观看| 国产69精品99久久久久久宅男| 五月婷婷久久久| 在线观看视频一区二区欧美日韩 | 亚洲妇女屁股眼交7| 亚洲天堂资源在线| 日本人妖一区二区| 日本道在线视频| 日韩a级大片| 国产精品自拍偷拍| 天堂av在线电影| 亚洲老板91色精品久久| 亚洲图片欧美在线| 亚洲午夜三级在线| x88av在线| 国产福利精品一区| 欧美牲交a欧美牲交aⅴ免费真| 欧美色就是色| julia一区二区中文久久94| 天堂中文在线播放| 久久中文字幕在线视频| 天天色综合av| 这里只有精品免费| 青草视频在线观看免费| 亚洲欧美怡红院| 国产精品无码一区二区三区免费| 看片的网站亚洲| 无码粉嫩虎白一线天在线观看 | 自拍偷拍亚洲在线| xxxx国产精品| 欧美日韩一区二区三区在线看| 亚洲av无码一区二区三区在线| 91在线观看免费视频| 中文字幕 欧美日韩| 亚洲主播在线| 成人午夜免费剧场| 日本一区二区高清不卡| 国产一区二区在线观看免费播放| vam成人资源在线观看| 国产91在线播放| 里番在线播放| 久久精品影视伊人网| 国产在线一在线二| 亚洲精品一区二区三区在线观看| 一级片在线免费观看视频| 狠狠躁夜夜躁人人爽天天天天97| 国产免费无码一区二区视频| 中文字幕欧美国产| 日韩在线免费观看av| 成人av中文字幕| 日韩精品视频网址| 麻豆精品国产传媒mv男同| 精品视频一区二区在线| 影音先锋久久久| 日韩精品一区二区在线视频| 99视频精品全部免费在线视频| 欧美精品一区三区在线观看| 欧美日韩一区二区三区在线电影| 91久热免费在线视频| 高清av一区| 国产精品va在线播放我和闺蜜| 在线免费看h| 欧美亚洲激情在线| 超碰在线公开| 91精品国产91久久久久久吃药 | 国产精品99视频| 色涩成人影视在线播放| 国产探花在线精品一区二区| 久久精品欧美| 小嫩嫩12欧美| 蜜桃狠狠色伊人亚洲综合网站| 国产精品久久久久av蜜臀| av免费精品一区二区三区| 精品国产亚洲一区二区三区| 成人夜晚看av| 精品视频在线播放一区二区三区 | 婷婷成人综合网| 成年人午夜视频| 欧美日韩另类视频| 国产精品va无码一区二区三区| 欧美丝袜一区二区三区| 日韩熟女一区二区| 91福利资源站| 伊人成人在线观看| 91精品国产综合久久小美女| 国产成人精品毛片| 亚洲第一区在线| 手机亚洲第一页| 亚洲欧美另类国产| 高清福利在线观看| 久久久999精品视频| 中文av资源在线| 欧美日产国产成人免费图片| zzzwww在线看片免费| 日产精品久久久一区二区福利| 国产v综合v| 成人免费视频在线观看超级碰| 日韩精品视频一区二区三区| 国产精品日韩一区二区| 亚洲香蕉视频| 中文字幕成人一区| 黄色欧美成人| 欧美日韩在线免费播放| 激情综合一区二区三区| 一级黄色片毛片| 久久久精品免费免费| 一级片黄色录像| 一区二区三区四区五区视频在线观看 | 精品国产乱码久久久久久果冻传媒 | 亚洲综合丁香婷婷六月香| 国产成人在线播放视频| 欧美中文一区二区三区| 国产农村老头老太视频| 亚洲精品久久久久久久久久久久久 | 亚洲精品一级二级三级| 亚洲欧洲精品一区| 亚洲视频福利| 免费在线观看毛片网站| 精品在线免费视频| 黄色国产在线观看| 国产精品美女久久久久高潮| 久久精品www| 欧美视频在线观看一区二区| 超碰在线播放97| 一本大道久久加勒比香蕉| 青春草免费在线视频| 国产精品久久久久久久久| 澳门成人av| 亚洲韩国在线| 亚洲一区二区伦理| 国产黄色一区二区三区| 国产视频一区在线播放| 久操视频免费在线观看| 欧美在线观看一二区| 懂色av一区二区三区四区| 中文字幕视频在线免费欧美日韩综合在线看 | 久久久久狠狠高潮亚洲精品| 国产酒店精品激情| 欧美激情久久久久久久| 红桃av永久久久| 国产黄色一级大片| 国产亚洲欧美日韩精品| а√天堂8资源中文在线| 亚洲free嫩bbb| 成人情趣视频网站| 妞干网在线免费视频| 不卡一区在线观看| 久草视频在线免费看| 欧亚洲嫩模精品一区三区| 香港三日本三级少妇66| 九九九久久久久久| 57pao成人永久免费| 亚洲一卡二卡| 日本不卡中文字幕| 久久精品视频18| 欧美日韩视频在线| 手机av在线免费观看| 久久69精品久久久久久国产越南| 日韩三区四区| 在线观看一区欧美| 美女视频黄 久久| 调教驯服丰满美艳麻麻在线视频| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品国产suv一区| 美女国内精品自产拍在线播放| 天天综合91| 在线免费观看成人网| 久久精品国产久精国产| 黄色片网站在线播放| 欧美三级一区二区| 在线观看a视频| 国产这里只有精品| 999精品色在线播放| 九九热免费在线观看| 中文字幕在线播放不卡一区| 一级二级三级视频| 日韩在线观看免费全| www欧美在线观看| 最近免费观看高清韩国日本大全| 国产一区二区精品久久91| 永久看片925tv| 日韩免费电影一区| av白虎一区| 免费日韩电影在线观看| 玖玖视频精品| 人成免费在线视频| 91精品国产综合久久久久久久久久 | 国产一区二区三区免费在线| 欧美日韩午夜爽爽| 北岛玲一区二区三区四区| 欧美日韩乱国产| 中文字幕精品网| 91麻豆精品一二三区在线| 97av中文字幕| 91在线视频官网| 欧美成人精品网站| 久久伊人色综合| 国产图片一区| 人妻无码视频一区二区三区| 国产精品无码永久免费888| 国产一区二区网站| 久久久女女女女999久久| 自拍偷拍欧美一区| jizzzz日本| 亚洲国产日韩一级| 国产在线中文字幕| 亚洲在线视频观看| 国产精品日韩精品欧美精品| 国产调教在线观看| 欧美大片在线观看| 成人做爰视频www网站小优视频| 一个色的综合| 成人av影院在线| 夜夜爽8888| 97福利一区二区| 久久国产中文字幕| 国产极品一区二区| 欧美日韩日日骚| 九九精品调教| 亚洲精品一卡二卡三卡四卡| 国产成人超碰人人澡人人澡| 国产主播第一页| 欧美精品激情视频| 日韩精品91| av直播在线观看| 欧美一区二区在线不卡| 校园春色亚洲色图| 日本手机在线视频| 亚洲毛片av在线| 国产精品一二三区视频| 国产欧美日韩综合一区在线观看|