javascript
Spring源码分析前篇
窮舉法:把生活所見所聞全部歸納到我們所學(xué)的知識體系中來,加以思考總結(jié)變成自己的東西。(舉例子)
類比法:用自己熟悉的方法(利用自己已有的知識體系),去對比學(xué)習(xí)新的知識。
學(xué)習(xí)最好的方法:就是重復(fù)
Spring怎么學(xué)?
1、環(huán)境準(zhǔn)備好了沒有?(自學(xué)能力的考研)
2、項目里頭有紅叉
? ?學(xué)源碼 ,不一定要讓項目完全跑起來,包一兩個紅叉其實(shí)不要緊
? ?
? ?看:是什么? 能干啥
? ?想:為什么??
? ?---------------------------
? ?實(shí)踐:怎么做?
? ? ? ? ?調(diào)試的時候,完全可以在運(yùn)行環(huán)境,導(dǎo)入jar就能調(diào)試(有針對性的打斷點(diǎn))
? ?
? ?
3、如何從0到1去學(xué)習(xí)
? ?首先看官網(wǎng)文檔,去網(wǎng)上找資料參考 (有了基本的概念,產(chǎn)生很多問題,很多猜想)
? ?
? ?然后,看項目結(jié)構(gòu)(更加具體的了解,還是產(chǎn)生很多猜想)
? ?
? ?為什么會存在Spring這個東西?
? ?能做什么,做了什么,要我來做,我該怎么做?
? ?
? ?IOC、AOP、DI、BeanFactory等這樣的一些零碎的概念(人云亦云)
? ?
? ?能做什么:Java中的萬能膠
? ?做了什么:Java Bean能夠?qū)崿F(xiàn)無縫對接
? ?
? ?要我來做,我該怎么做: 作為一個框架而言,在編寫框架代碼的時候,所要對接Bean是不存在
? ? ? ? ? ? ? ? ? ? ? ? ? 通過預(yù)設(shè)規(guī)則,按照一定的規(guī)則去順序加載或識別需要對接的Bean(反射,通過類全名字符串可以找到并創(chuàng)建一個Bean的實(shí)例)
?? ??? ??? ??? ??? ??? ? ?規(guī)定配置文件的默認(rèn)名字
?? ??? ??? ??? ??? ??? ? ?
?? ??? ??? ??? ??? ??? ? ?IOC:緩存的地方,得把它存起來(Map容器)
?? ??? ??? ??? ??? ??? ? ?
?? ??? ??? ??? ??? ??? ? ?DI:getter、setter、constructor(反射、invoker)
?? ??? ??? ??? ??? ??? ? ?
?? ??? ??? ??? ??? ??? ? ?AOP:為了增強(qiáng)原始Bean的功能(代理技術(shù))
4、沒有Spring將如何開發(fā)?
? ?人是懶惰的,一切高端技術(shù)的發(fā)明都是源于人類懶惰,何必重復(fù)造輪子呢?
? ?沒有Spring,那是到了Spring出現(xiàn)以前的開發(fā)了
? ?a、很多設(shè)計模式需要自己去整合,當(dāng)然,你也可以選擇不用設(shè)計模式(只不過多走點(diǎn)彎路而已)
? ?b、所有的封裝、繼承、多態(tài)、增強(qiáng)、依賴、模塊管理等等工作都有自己制定統(tǒng)一的規(guī)則(百花齊放,百家爭鳴)
? ?c、所有的創(chuàng)建對象、配置依賴關(guān)系、資源的重復(fù)利用、擴(kuò)展性的手動操作
? ?
? ?Spring出現(xiàn)以后,Java程序員的春天真的來了,解放了
? ?
? ?
Tom老師學(xué)習(xí)Spring:七分猜測三分驗(yàn)證 (七分靠打拼,三分天注定)
? ? ? ? ? ? ? ? ? ?如果猜對了,會有一種成就感(永遠(yuǎn)不會忘)
?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ? 看源碼第一遍是非常痛苦的
?? ??? ??? ??? ? ? 看第二遍、看第三遍思路越來越清晰
?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ? 帶著思考去找入口(主入口、隱藏的入口)
?? ??? ??? ??? ? ??
//要想跑起來,運(yùn)行的run方法里面的代碼?? ??? ??? ??? ? ??
new Thread(){
? ? //跑起來
?? ?public void go(){
?? ??? ?... ...
?? ?}
?? ?
?? ?public void run(){
?? ??? ?... ...
?? ?}
?? ?
}?? ??? ??? ??? ? ??
?? ??? ??? ??? ??
RMI源碼的時候
Socket ? ? socket.write(); 入口
ServerSocket ? ? ?while(true){ ? server.accept(); }
?? ??? ??? ??? ??
?? ??? ??? ??? ??
看Tomcat的源碼
Main方法?? ?
?? ?
?? ??? ??? ??? ? ??
Spring
ClassPathXmlApplicationContext app 顯示的入口?? ?
查找用戶需要加載哪些配置文件
讀取配置文件
注冊
定位、加載、注冊??
?
總結(jié)
以上是生活随笔為你收集整理的Spring源码分析前篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring源码版本命名规则及下载安装(
- 下一篇: Spring框架的前世今生以及对Spri