Spring核心源碼深度解析(二) 基本應(yīng)用


Spring 基本應(yīng)用

目前,幾乎所有java項(xiàng)目都會(huì)涉及到Spring,乃至后面的SpringBoot,SpringCloud也逐步占據(jù)市場(chǎng),可見(jiàn)Spring的技術(shù)生態(tài)在Java的領(lǐng)域是多么的重要,那么就讓我們來(lái)了解Spring到底為我們解決了那些問(wèn)題呢。

在Spring官網(wǎng)提出,Spring核心提供依賴注入、事件、數(shù)據(jù)源、AOP等功能,相信做過(guò)java開(kāi)發(fā)的對(duì)Spring應(yīng)用都比較熟悉,這里就不對(duì)Spring的應(yīng)用做大量篇幅,只最常用的特性舉例。

Spring IOC DI

新建兩個(gè)User類實(shí)現(xiàn)User接口,然后構(gòu)建一個(gè)SpringIocDemo包含兩個(gè)User類

新建測(cè)試類

打印結(jié)果:

結(jié)果說(shuō)明Spring代替我們對(duì)對(duì)象進(jìn)行管理

Spring AOP

接下來(lái)對(duì)Spring第二大特性AOP進(jìn)行代碼展示,切面配置類

被增強(qiáng)的類

新建一個(gè)測(cè)試類

輸出結(jié)果:

以上介紹了Spring的重要特性進(jìn)行了簡(jiǎn)單介紹,但事實(shí)上Spring能夠做到得到遠(yuǎn)不止于此,我們以后在源碼分析的時(shí)候會(huì)進(jìn)行嵌套分析。

Spring 源碼解析準(zhǔn)備工作

在對(duì)Spring源碼解析之前,筆者認(rèn)為讀者需要具備以下基礎(chǔ)知識(shí):

1、Java反射

在Spring對(duì)bean的創(chuàng)建和屬性的注入幾乎都是采用的反射機(jī)制,所以讀者需要對(duì)反射有一定了解,否則Spring源碼理解起來(lái)會(huì)比較吃力,如果對(duì)這塊知識(shí)有所缺陷的最好彌補(bǔ)一點(diǎn)反射的基礎(chǔ)知識(shí)。

2、動(dòng)態(tài)代理

動(dòng)態(tài)代理相信小伙伴們并不陌生,就算沒(méi)用過(guò)CGLIB應(yīng)該對(duì)JDK動(dòng)態(tài)代理有所了解,簡(jiǎn)而言之就是在JVM運(yùn)行時(shí)對(duì)目標(biāo)類增強(qiáng),如果讀者對(duì)動(dòng)態(tài)代理不了解的話,筆者建議彌補(bǔ)一下在進(jìn)行下一階段學(xué)習(xí)。

3、工廠模式

工廠模式在Spring的使用可以說(shuō)是貫穿整個(gè)Spring體系的,可以說(shuō)Spring IOC的核心就是依據(jù)工廠模式的建設(shè),只不過(guò)Spring對(duì)自己的工廠建設(shè)十分龐大而有序,讀者務(wù)必了解工廠模式的基本思想,在進(jìn)行Spring的后續(xù)學(xué)習(xí)。

淺談Spirng

在沒(méi)有接觸過(guò)Spring源碼之前,一些讀者或許認(rèn)為Spring源碼并無(wú)太多懸念,無(wú)非就是用一個(gè)工廠對(duì)對(duì)象進(jìn)行封裝,甚至有些讀者能夠自己實(shí)現(xiàn)Spring的某些功能,就認(rèn)為Spring不過(guò)如此,就認(rèn)為Spring就像這樣

當(dāng)然Spring的根確實(shí)如此,但筆者認(rèn)為這不是Spring的核心,更不是Spring設(shè)計(jì)的精髓,喬布斯有一句話:求知若饑,虛心若愚。所以筆者認(rèn)為如果想深入了解Spring,就需要持有謙虛的態(tài)度。

Spring啟動(dòng)入口

在Spring官網(wǎng)指出,從Spring3.0開(kāi)始支持java代碼方式構(gòu)建Spring框架,并且個(gè)人認(rèn)為Spring也是推薦使用這種方式,從Springboot就可以看出,Spring對(duì)XML方式已經(jīng)越來(lái)越遙遠(yuǎn),為此本文將以AnnotationConfigApplicationContext作為源碼入口進(jìn)行源碼分享。

下一章節(jié)會(huì)AnnotationConfigApplicationContext作為源碼入口開(kāi)始分享源碼核心設(shè)計(jì)思想

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容