javascript
Spring源码由浅入深系列一 简介
概述:
? ? ? ? Spring是一個企業(yè)級的開源框架。它提供輕量級的依賴注入、面向切面編程、全方位的整合框架。
下圖是Spring框架的組成部分,各部分內(nèi)容作了簡單說明。
依賴注入:?
? ? ? ??依賴注入是Spring框架的靈魂。它是一種解耦組件之間關(guān)系的高層設(shè)計模式。
依賴注入案例分析:
? ? ? ??現(xiàn)在有一個業(yè)務(wù)流程中需要把數(shù)據(jù)保存到軟盤中去。最直觀的方法就是直接在業(yè)務(wù)流程中創(chuàng)建一個軟盤,用軟盤的方式保存數(shù)據(jù)。如下圖:
? ? ? ??那如果現(xiàn)在業(yè)務(wù)變更,我可以讓客戶選擇用軟盤來保存數(shù)據(jù),或者是U盤。那可能的解決方式是面向接口編程,由工廠幫助我們?nèi)?chuàng)建具體介質(zhì)。如下圖所示:
? ? ? ??在這里請注意,我們通常的做法是在業(yè)務(wù)流程中,根據(jù)客戶的選擇,由工廠生成一個特定介質(zhì)給業(yè)務(wù),這就是我們常說的簡單工廠模式。但是,也可以利用反射在工廠里去創(chuàng)建、裝配業(yè)務(wù)與介質(zhì)。業(yè)務(wù)與具體的介質(zhì)完全沒有關(guān)系,由工廠提供。這時候工廠就變?yōu)榱艘粋€依賴注入的容器。在Spring中,這個容器由BeanFactory實現(xiàn)。
? ? ? ??Spring的靈魂是依賴注入,依賴注入靈魂就是反射。它的整個實現(xiàn)都是由Java反射去支撐的。
面向切面:
? ? ? ??把一些公共功能定義成單獨對象,然后在不修改其它類的前提下,將公共功能加入到這些類中。面向切面常用于緩存統(tǒng)一處理、統(tǒng)一異常處理等等。
AOP(面向切面)概念:
? ? ? ??Joinpoint(連接點): 程序執(zhí)行過程中某個特定的點,比如方法調(diào)用的時候或者拋出異常的時候
? ? ? ??PointCut(切入點): 需要被添加上通知的連接點的集合。
? ? ? ??Advice(通知): 在連接點,動態(tài)嵌入的一段獨立代碼(通知常用來調(diào)用系統(tǒng)組件方法)。
? ? ? ??Aspect(切面): 切入點和Advice的結(jié)合(抽象概念:定義在切入點調(diào)用通知)
? ? ? ??Target(目標(biāo)對象): 需要被添加上Advice的對象
? ? ? ??代理對象:AOP框架生成的對象。在目標(biāo)對象的基礎(chǔ)上,添加了其他操作
? ? ? ??面向切面的實現(xiàn)是通過動態(tài)代理實現(xiàn)的:JDK動態(tài)代理、CGLIB動態(tài)代理。
? ? ? ??這一章,主要從宏觀上把握Spring.到下一章,我們開始剖析Spring的源碼。
轉(zhuǎn)載于:https://www.cnblogs.com/writeLessDoMore/p/6939408.html
總結(jié)
以上是生活随笔為你收集整理的Spring源码由浅入深系列一 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows下VTK6.0.0安装详解
- 下一篇: Spring源码解析:自定义标签的解析过