- Spring Boot進階:原理、實戰與面試題分析
- 鄭天民
- 823字
- 2022-07-05 09:41:38
1.3.1 核心容器
針對核心容器,我們將深入討論Spring所具備的依賴注入和面向切面編程這兩項基礎功能。
1. 核心容器的實戰內容
(1)依賴注入
對于依賴注入而言,Spring容器為開發人員提供了字段注入、構造器注入和Setter方法注入這三種實現方式。不同的依賴注入方式各有其優缺點,我們將對它們進行詳細的分析,并給出Spring依賴注入的實現原理。
當討論如何管理對象之間的依賴關系時,循環依賴是一個不可回避的話題。Spring的依賴注入機制在解決循環依賴問題時采用了三級緩存機制。這是Spring在設計和實現上的一大特色,也是開發人員在面試過程中經常遇到的話題,我們將對三級緩存結構以及循環依賴解決方案進行深入剖析。
從實戰角度講,把握Bean的作用域、靈活使用注解配置、設置組件掃描范圍以及對不同配置進行性能分析是日常使用Spring依賴注入時所需要掌握的一些開發技巧。
(2)面向切面編程
對于AOP而言,Spring框架提供了連接點、通知、切點等核心概念,以及@Before、@After、@Around、@AfterThrowing和@AfterReturning等注解。通過這些注解,開發人員可以很輕松地在業務代碼中嵌入切面。
AOP的使用雖然簡單,但它背后的實現原理并不簡單。想要理解AOP的原理就需要對動態代理機制有深入的了解。Java世界中典型的JDK動態代理和CGLIB動態代理,在Spring中也都得到了廣泛應用。我們將基于這些代理機制來詳細分析Spring AOP的實現原理。
從實戰角度講,活用切點表達式、確保類內方法調用能夠應用代理、避免代理機制引起多次初始化過程以及優先使用JDK動態代理是常見的開發技巧。
2. 核心容器的實戰案例
在核心容器部分,我們將給出三個實戰案例,即消除循環依賴案例、Spring AOP案例以及Spring AOP代理機制對性能的影響案例。
針對如何消除循環依賴,業界也存在一些常見的做法。我們將通過代碼實例給出消除循環依賴的三種實現方法,即提取中介者、轉移業務邏輯以及使用回調機制。
Spring AOP案例演示如何在Spring中使用面向切面編程技術。而AOP代理機制對性能的影響案例的目標是分析各種動態代理機制對于Spring執行性能的影響。我們將分別針對JDK動態代理和CGLIB動態代理給出對應的性能評估,并明確推薦使用的代理機制。