Spring當中解決循環依賴的辦法有哪些?

  • 2019 年 11 月 11 日
  • 筆記

當程式設計師當的越久,接觸的越多,就會越「迷茫」。像我,分散式好像懂一點,源碼也好像懂一點。技術棧越來越多,但是好像哪一點也不精通,就會程式碼寫得越多越「迷茫」。我可以很負責任的告訴你,你只要精通Spring這一門,不說高枕無憂,也差不多了。

現在的主流Javaweb項目基本都使用了Spring技術,甚至會對Spring作深度擴展。Spring框架的應用比較簡單,但是Spring項目比較龐大,單單一個SpringFramework項目就比較龐大,整個Spring全家桶更加龐大。

Spring的關鍵技術你了解多少?

  • 關於IOC和DI,依賴注入和控制反轉到底什麼關係
  • Spring當中解決循環依賴的辦法、什麼場景下需要解決循環依賴
  • FactoryBean和BeanFactory以及普通Bean三者的關係和區別

Spring有哪些難點?

  • Springframework項目中比較典型的技術就是IOC和AOP,其中IOC的bean的生命周期比較複雜。
  • 針對Spring的源碼做擴展也比較複雜。
  • Springframework項目中提供的組件比較豐富,每個組件都有其對應的功能,能不能合理利用起來Spring提供的組件是考察一個程式設計師對Spring應用熟悉程度的重要標準。
  • Spring的源碼設計的比較優秀,利用了很多優秀的設計模式,需要考慮如何把這種設計模式利用到自己寫的程式碼中需要好好借鑒、學習Spring源碼中作者的思想。

學好Spring,對程式設計師找工作、面試有非常大的幫助。比如最新的spring5的新特性很多人都不理解,假設程式設計師能夠讀一遍spring源碼把spring的設計思想完全理解,那麼可以秒殺很多面試官和程式設計師。並且可以利用spring提供的擴展寫出很多優秀的程式碼甚至中間件。

掃一掃,大廠架構師在線解答

學完課程,你可以拿這份試題練手,看看對Spring掌握的如何。

1、Spring bean的生命周期能不能結合源碼回答一下這個問題、或者結合一下bean的生命的意義來回答,就是Spring為什麼需要找個生命周期

2、Spring容器當中包含了哪些常用組件(至少說5個),作用是什麼,場景是什麼;比如BeanDefinition;再比如BeanDefinitionMap

3、Spring自動注入的原理是什麼?能不能從源碼來說明一下這個問題;我們常常說的自動注入,到底怎麼注入的?有什麼坑?怎麼讓你一個屬性不自動注入

4、Spring源碼當中如何來搞定循環依賴的?Spring支援循環依賴?生命情況不支援?支援的原理是什麼?能不能從源碼來說明一下?

5、如何來二次擴展Spring,比如自定義一個實現自動注入的註解;不使用@Autowried,自己如何開發一個@XXX來完成自動注入?

6、mybatis源碼當中利用了Spirng的那些擴展?mybatis擴展Spring之後有哪些問題是無法解決的?比如二級快取怎麼解決

7、eureka源碼當中如何擴展的Spring?比如怎麼動態插拔eureka的功能,利用了Spring的那個技術點,或者從源碼說一下