精品欧美一区二区三区在线观看 _久久久久国色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视频在线观看一区三区| 91精品国产91久久久久福利| 少妇大叫太粗太大爽一区二区| 日韩免费小视频| 亚洲欧美另类在线| 蜜桃麻豆www久久国产精品| 91成品人片a无限观看| 免费精品99久久国产综合精品应用| 韩国av网站在线| 成人禁用看黄a在线| 国产精国产精品| 老女人性淫交视频| 欧美极品在线观看| 日韩一卡二卡三卡四卡| 少妇性l交大片| 天堂va在线| 亚洲国产高清不卡| 国产日韩精品推荐| 在线视频 91| 亚洲黄色av| 日日摸夜夜添一区| 国产乱了高清露脸对白| 精品国产亚洲一区二区在线观看| 欧美日韩亚洲激情| 日韩一级免费看| 最新国产在线观看| 91蝌蚪国产九色| 超碰在线97av| 国产人妖在线播放| 理论片日本一区| 国产精品v片在线观看不卡| 国产无遮无挡120秒| 久久久久久久久国产一区| 亚洲欧美色图片| 亚洲精品第二页| 欧美精品影院| 欧美日韩不卡一区二区| 亚洲狼人综合干| 蜜臀久久精品| 婷婷久久综合九色国产成人 | 亚洲国产成人高清精品| 一本—道久久a久久精品蜜桃| 美国一级片在线免费观看视频| 成人av先锋影音| 成人av片网址| 午夜精品久久久久久久96蜜桃| 国产在线乱码一区二区三区| 国产免费成人av| 伊人成人在线观看| 美女任你摸久久| 国产精品视频自在线| 亚洲高清在线看| 日韩专区欧美专区| 国产精品福利无圣光在线一区| 亚洲欧美综合自拍| 美女爽到呻吟久久久久| 欧美亚洲另类在线| 男人日女人网站| 欧美在线综合| 国产精品18久久久久久麻辣| 懂色av中文字幕| 免费久久99精品国产| 国产精品日韩欧美大师| 亚洲一区在线观| 国产在线国偷精品免费看| 91免费看片网站| 亚洲高清视频在线播放| 成人手机在线视频| 美女主播视频一区| 国产免费a∨片在线观看不卡| 国产欧美精品一区aⅴ影院| 日本一区二区三区四区在线观看| 9色在线观看| 亚洲精品va在线观看| 精品国偷自产一区二区三区| 中文字幕乱码在线播放| 色婷婷综合视频在线观看| 日本免费观看网站| 国产电影一区| 亚洲精品成人久久| 亚洲色成人网站www永久四虎| 久久亚洲国产| 欧美国产高跟鞋裸体秀xxxhd| 亚洲一区欧美在线| 日韩福利视频网| 亚洲xxxx在线| 可以在线观看的黄色| 国产精品欧美精品| 欧美亚洲黄色片| 日韩色淫视频| 精品国产欧美一区二区| 国精产品一区一区三区免费视频| 久久国产综合| 久久人人爽人人| 中文字幕乱码一区二区| 国产91在线观看丝袜| 欧美一区二视频在线免费观看| 黄色免费网站在线| 日韩欧美极品在线观看| 热久久久久久久久| 亚洲警察之高压线| 久国内精品在线| 九九热最新视频| 成人免费视频视频| 亚洲欧美综合一区| av美女在线观看| 欧美精品xxxxbbbb| 午夜理伦三级做爰电影| 中文精品电影| 国产精品高潮视频| 色一情一乱一乱一区91av| 国产精品短视频| 91专区在线观看| 日韩高清二区| 日韩在线欧美在线国产在线| av大片在线免费观看| 国产精品自拍在线| 亚洲精品中文字幕在线| 成人香蕉视频| 欧美精品一区二区三| www.av免费| 秋霞成人午夜伦在线观看| 韩日午夜在线资源一区二区 | 亚洲精品久久久久久久久久| 久久亚洲私人国产精品va媚药| www.夜夜爱| 91麻豆精品国产综合久久久| 国产亚洲激情在线| 国产成人无码精品亚洲| 国产成人免费视| 特级黄色录像片| 黑人一区二区三区| 亚洲天堂av综合网| 日本免费观看视| 粉嫩一区二区三区性色av| 一本一本a久久| 精品久久福利| 色偷偷888欧美精品久久久| 久久久久久久久久久影院 | 精品一区二区6| 久久久青草婷婷精品综合日韩| 国产精品yjizz| 亚洲性图自拍| 日韩精品一区二区三区老鸭窝| 91高清免费观看| 国内精品伊人久久久久av影院| 亚洲精品中字| 久久av影院| 爱福利视频一区| 国产伦精品一区二区三区视频痴汉| 国产精品免费av| 中文字幕第88页| 欧美激情电影| 成人美女av在线直播| 日本在线观看免费| 欧美二区三区91| avtt天堂在线| 成人亚洲精品久久久久软件| 僵尸世界大战2 在线播放| 国产精品白浆| 欧美性受xxxx白人性爽| 国产三级电影在线观看| 欧美专区日韩专区| 成人涩涩小片视频日本| 国产成人精品影视| 你真棒插曲来救救我在线观看| 久久国产精品免费精品3p| 97成人在线视频| 国产裸舞福利在线视频合集| 欧美日韩一区不卡| 亚洲天堂黄色片| 成人高清免费观看| 国产黄色特级片| 欧美gvvideo网站| 成人黄色在线免费观看| 亚洲精品动漫| 日韩在线免费观看视频| 亚洲精品911| 日韩欧美中文字幕在线播放| 在哪里可以看毛片| 精品一区二区三区在线观看| www成人免费| 一区三区在线欧| 91久久精品国产91久久| 538视频在线| 日韩在线观看免费网站| 亚洲第一精品网站| 日本精品一区二区三区四区的功能| 青青操在线播放| 成人国产精品视频| 香蕉视频禁止18| 亚洲成色精品| 亚洲激情一区二区三区| 99久久婷婷国产综合精品青牛牛| 人人爽久久涩噜噜噜网站| 快射视频在线观看| 亚洲欧美激情四射在线日| 国产日本精品视频| 色综合中文综合网| 免费毛片在线播放免费| 日本一区二区三区四区 | 亚洲天堂中文字幕在线| 性久久久久久久久| 亚洲一区电影在线观看| 91美女视频网站| 日韩欧美中文在线视频| 久久久久久黄| av在线播放亚洲| 午夜影院欧美| 水蜜桃一区二区三区| 高清精品视频| 91久久久在线| 日本肉肉一区 | 九色自拍视频在线观看| 99精品视频在线观看播放| 久久久综合亚洲91久久98| 视频一区日韩| 成人日韩av在线| 精品肉辣文txt下载| 欧美中在线观看| tube8在线hd| 精品综合久久久久久97| 久久日韩视频| 中文字幕亚洲图片| 狠狠v欧美ⅴ日韩v亚洲v大胸| 精品福利在线导航| 国产女人高潮的av毛片| 欧美吻胸吃奶大尺度电影| 日韩污视频在线观看| 亚洲一区二区三区四区在线免费观看| 呻吟揉丰满对白91乃国产区| 久久九九久久九九| 91精品小视频| 国产成人自拍在线| 91香蕉视频免费看| 国产真实乱对白精彩久久| 污污网站免费观看| 麻豆freexxxx性91精品| 日韩一级片播放| 日韩精品每日更新| www黄色在线| 日韩激情视频在线观看| 乱子伦视频在线看| 男人天堂欧美日韩| 日本成人在线免费视频| 男人的天堂成人在线| 欧美日韩第二页| 日韩精品电影一区亚洲| 精品久久久久久久无码| 青青草精品视频| 日本美女视频一区| 国产在线精品不卡| 日本成人在线免费观看| 国产91精品一区二区| jjzz黄色片| 99久久综合国产精品| 日韩av一二区| 久久久99久久精品欧美| 人妻熟人中文字幕一区二区| 国产精品不卡在线观看| 国语对白在线播放| 亚洲国产视频在线| 国产精品免费av一区二区| 欧美性xxxx极品hd满灌| 欧美特级黄色片| 在线不卡免费欧美| 亚洲精品久久久久久无码色欲四季| 亚洲成**性毛茸茸| 欧美老女人性开放| 色七七影院综合| 午夜dj在线观看高清视频完整版| 久久久久久久久久亚洲| 超碰资源在线| 国产精品视频一区二区高潮| 久久免费福利| 久久国产精品99久久久久久丝袜| 精品久久久久久久久久久下田 | 男人的天堂在线视频免费观看| 麻豆乱码国产一区二区三区| 看黄在线观看| 91精品国产综合久久香蕉最新版 | 国产卡一卡二在线| 91久久亚洲| 天天爱天天操天天干| 国产精品综合av一区二区国产馆| 久久人人爽人人爽人人片| 国产精品免费视频一区| 国产一级在线播放| 欧美性大战久久久久久久| 精品久久久无码中文字幕| 国产午夜精品麻豆| 中文字幕有码在线观看| 欧美中文在线观看| 国产精品一区二区三区av| 裸模一区二区三区免费| 欧美福利电影在线观看| 不卡影院一区二区| 国产精品123区| 在线视频第一页| 亚洲成va人在线观看| 亚洲视频中文字幕在线观看| 精品国产123| 男人和女人做事情在线视频网站免费观看 | 91一区二区三区| 欧美精品系列| 男女超爽视频免费播放| 久久99久久99小草精品免视看| 成人性生活免费看| 亚洲欧美日本韩国| 无码人妻精品一区二区三区蜜桃91| 精品少妇一区二区三区| 亚洲免费视频一区二区三区| 7m精品福利视频导航| 精品国产欧美| 一区二区三区日韩视频| 日产国产欧美视频一区精品| 91丝袜在线观看| 一区二区三区在线视频观看| 中文字幕第31页| 亚洲欧美综合精品久久成人| 7777kkk亚洲综合欧美网站| 99高清视频有精品视频| 91精品综合久久久久久久久久久| 欧美少妇性生活视频| 久久综合久久鬼色中文字| 国产一级在线观看视频| 日韩视频免费观看高清在线视频| 91高清在线| 国产精品久久久久久搜索 | 日韩不卡视频在线| 精品国产乱码久久久久久浪潮| 免费在线观看av| 国产久一一精品| 成人看的视频| caopor在线视频| 国产亚洲精品7777| 中文字幕精品无码一区二区| 精品中文字幕久久久久久| 麻豆国产在线| 久久这里精品国产99丫e6| 亚洲精品女人| 内射中出日韩无国产剧情| 午夜精品久久久久久不卡8050| 成人免费视频国产免费麻豆| 欧美黑人性视频| 99久热这里只有精品视频免费观看| 免费cad大片在线观看| 国产精品资源在线观看| 欧美国产精品一二三| 日韩欧美中文字幕公布| 任你弄在线视频免费观看| 成人女人免费毛片| 亚洲精选一区| 91中文字幕永久在线| 在线亚洲一区观看| 都市激情一区| 成人网欧美在线视频| 欧美国产高清| 亚洲欧美高清在线| 粉嫩av一区二区三区免费野| 免费一级在线观看| 国产精品免费电影| 性欧美69xoxoxoxo| 一级黄色电影片| 欧美性猛交xxxxx水多| 成人精品一区二区| 成人两性免费视频| 在线成人国产| www在线观看免费视频| 欧美日本在线一区| 免费看电影在线| 免费试看一区| 六月丁香婷婷色狠狠久久| 69av视频在线| 精品在线观看国产| 国产精品一区二区三区av| 免费不卡av在线| 中文字幕高清不卡| 亚洲成人av综合| 秋霞av国产精品一区| 99re6这里只有精品| 中文字幕在线永久| 欧美在线观看视频一区二区 | 日韩精品网站| 欧美体内she精高潮| 欧美视频在线免费| 麻豆传媒在线免费| 精品蜜桃一区二区三区| 美女一区二区三区| 日本a在线观看| 色婷婷综合久久久久| 老司机成人在线| 中文字幕线观看| 福利微拍一区二区| а√天堂官网中文在线| 欧美高清性xxxxhdvideosex| 国产精品羞羞答答xxdd| 黄色av一区二区|