當程序員當的越久,接觸的越多,就會越“迷茫”。像我,分佈式好像懂一點,源碼也好像懂一點。技術棧越來越多,但是好像哪一點也不精通,就會代碼寫得越多越“迷茫”。我可以很負責任的告訴你,你只要精通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的那個技術點,或者從源碼說一下
spring資料:轉發文章+關注私信【資料】領取獲取方式
閱讀更多 芒果教你學編程 的文章