還在機械地打代碼?咱們不少開發者在開發 Spring 的程序的時候,不少的狀況下,都是被動的接受了前輩們爲咱們作好的 Spring 特性案例。這樣以來,確實在很大的程度上減小了咱們開發的成本,可是也同時喪失了一個極好的學習機會,從而限制咱們開發員的橫向擴展能力。web
只知道如何使用,殊不知道作了什麼,那麼你註定只能是一個碼農。Spring 框架幾乎集成一半 Javaweb 開發的江山,可是你只知道如何寫,不知道爲何要這麼寫,也不知道要如何優化。Spring 做爲一個輕量級的 Java 開發框架,將面向接口的編程思想貫穿整個 Java 系統應用,所以在 Java 面試中常被提。本文經過代理模式和Spring面試中的一些問題來聊一聊Spring框架中的重要知識點!面試
代理模式相關問題爲何須要代理模式?編程
講講靜態代理模式的優勢及其瓶頸?設計模式
對Java 接口代理模式的實現原理的理解?安全
如何使用 Java 反射實現動態代理?架構
Java 接口代理模式的指定加強?併發
談談對Cglib 類加強動態代理的實現?app
Spring AOP相關問題 什麼是 AOP?框架
point cut,advice,Join point是什麼?分佈式
join point 和 point cut 的區別?
怎麼理解面向切面編程的切面?
談談對SpringAOP Weaving(織入)的理解?
談談SpringAOP Introduction(引入)的理解?
講解OOP與AOP的簡單對比?
講解JDK 動態代理和 CGLIB 代理原理以及區別?
講解Spring 框架中基於 Schema 的 AOP 實現原理?
講解Spring 框架中如何基於 AOP 實現的事務管理?
Spring IOC相關問題
什麼是 IOC?
談談對控制反轉的設計思想的理解?
怎麼理解 Spring IOC 容器?
Spring 中有多少種 IOC 容器?
Spring IOC 怎麼管理 Bean 之間的依賴關係,怎麼避免循環依賴?
對Spring IOC 容器的依賴注入的理解?
說說對Spring IOC 的單例模式和高級特性?
BeanFactory 和 FactoryBean 有什麼區別,BeanFactory 和 ApplicationContext 又有什麼不一樣?
Spring 在 Bean 建立過程當中是如何解決循環依賴的?
談談Spring Bean 建立過程當中的設計模式?
註解相關問題
註解是一種什麼樣的編程思想?
爲什麼可以直接使用@Autowired進行依賴注入?是如何工做的?
Spring 是如何經過@AutoWired 自動注入 Bean 屬性和 Map,List 集合的?
@Required 是如何起到檢查xml裏面屬性有沒有被配置的?
Spring 框架是如何把標註@Component 的 Bean 注入到容器?
@Configuration,@ComponentScan,@Import,@Bean 註解是是如何工做的?
使用@PropertySource 引入配置文件,那麼配置文件裏面的配置是如何被註冊到 Spring 環境裏面的?
講解如何經過自定義註解實現一個簡單的樹形文檔生成?
事務相關問題
在 XML 裏面配置了一個 SqlSessionFactoryBean 後,其究竟作了什麼?
在 XML 裏面配置了一個 MapperScannerConfigurer 後,其究竟作了什麼?
在執行 Mapper 接口的查詢方法後,發生了什麼?
tx:advice/、aop:config 標籤如何建立事務切面的?
標籤添加後爲什麼就可使用註解式事務了?爲何會報 Transaction rolled back because it has been marked as rollback-only 異常?
Transactional 註解是否能夠加在 private、protected 方法上?
事務的傳播屬性到底有什麼用,嵌套事務到底又是怎麼一回事?
爲何拋出了異常,事務卻沒有回滾?
Spring 事務是如何保證線程安全的?
如何系統正確的學習
我認爲有三個維度來講明:這個框架是爲了解決什麼問題而誕生的?這個框架的核心思想是什麼?這個框架適合應用到哪些場景?說到思想,我以爲編程的靈魂就是思想,沒有思想的編程和鹹魚沒什麼區別。「不要重複造輪子」,當時聽了趕腳這句話挺高大上的,如今我認爲這句話只能在某一方面是正確了。
首先我來講一下爲何要學會造輪子--由於你會造輪子後,用別人的輪子時纔會明白其原理,用的時候纔會駕輕就熟,若是你對一個框架的理解只是停留在用,用的多熟練的階段的話,那麼你就是一個「碼畜」,別人隨時能夠替代你。或許有人會說,項目時間緊根本不容許你寫一個輪子、你寫的還有那些大牛們寫的好嗎等理由反駁。但我想說的是:我沒說項目中非得用本身寫的輪子,本身寫的輪子不必定要和別人比,由於造輪子的目的是要理解這些輪子的思想。
說這麼多其實就是想告訴你們學習框架要理解框架的底層的原理,要掌握的就是最經常使用的原理。在這我分享一個開源框架的系統的思惟學習樹圖給你們,但願能給有須要的朋友提供一些幫助!
針對於上面的面試題我總結出了答案以及一些架構視頻資料免費分享給你們(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料),但願能幫助到您面試前的複習且找到一個好的工做,也節省你們在網上搜索資料的時間來學習。