spring源码分析第一天------源码分析知识储备
spring源碼分析第一天------源碼分析知識儲備
?
Spring源碼分析怎么學(xué)?
1、環(huán)境準(zhǔn)備;
2、思路
? ?看:是什么? 能干啥
? ?想:為什么??
? ?實(shí)踐:怎么做?
? ? ? ? ?調(diào)試的時(shí)候,完全可以在運(yùn)行環(huán)境,導(dǎo)入jar就能調(diào)試(有針對性的打斷點(diǎn))
? ?
3、如何從0到1去學(xué)習(xí)
? ?首先看官網(wǎng)文檔,去網(wǎng)上找資料參考 (有了基本的概念,產(chǎn)生很多問題,很多猜想)
? ?
? ?然后,看項(xiàng)目結(jié)構(gòu)(更加具體的了解,還是產(chǎn)生很多猜想)
??
? ?為什么會存在Spring這個東西?
? ?能做什么,做了什么,要我來做,我該怎么做?
? ?
? ?IOC、AOP、DI、BeanFactory等這樣的一些零碎的概念
? ?能做什么:Java中的萬能膠
? ?做了什么:Java Bean能夠?qū)崿F(xiàn)無縫對接
? ?
? ?要我來做,我該怎么做: 作為一個框架而言,在編寫框架代碼的時(shí)候,所要對接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ā)?
? ?a、很多設(shè)計(jì)模式需要自己去整合;
? ?b、所有的封裝、繼承、多態(tài)、增強(qiáng)、依賴、模塊管理等等工作都有自己制定統(tǒng)一的規(guī)則(雜亂無章);
? ?c、所有的創(chuàng)建對象、配置依賴關(guān)系、資源的重復(fù)利用、擴(kuò)展性的手動操作
? ?Spring出現(xiàn)以后,Java程序員解放了雙手
? ?
5、如何學(xué)習(xí)Spring:七分猜測三分驗(yàn)證
? ? ? ?看源碼第一遍是非常痛苦的;
? ? ? ?看第二遍、看第三遍思路越來越清晰
?? ??? 帶著思考去找入口(主入口、隱藏的入口)
?? ??? ??? ??? ? ??
6、Spring:定位、加載、注冊?? ? ?
ClassPathXmlApplicationContext app 顯示的入口?? ?
查找用戶需要加載哪些配置文件
讀取配置文件
注冊
總結(jié)
以上是生活随笔為你收集整理的spring源码分析第一天------源码分析知识储备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “之”字形打印矩阵~
- 下一篇: LeetCode算法入门- Remov