{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

為什么spring的源碼一看就犯困?有沒有什么學(xué)習(xí)的技巧?

sf190404sf190404 回答10 收藏1
問題描述:比如我最近想跟蹤下spring是如何實現(xiàn)transaction注解,網(wǎng)上資料細節(jié)都不是描述得很清楚,想自己看源碼,我的天啊,繞來繞去的,堅持看了一天,感覺信心被打擊了,有些代碼不知道是干啥的,然后主流程也理不清,so,有人能跟我分享一下嗎?感覺好挫敗
收藏問題

10條回答

馬忠志

馬忠志

回答于2022-06-22 18:29

因為spring的意思是春天,春困秋乏懂不

評論0 贊同0
  •  加載中...
garfileo

garfileo

回答于2022-06-22 18:29

抓住主線,分析源碼首先就是宏觀上知道這個源碼的目的是什么,例如spring就是實現(xiàn)了IOC和DI的功能,概念比較抽象,也可以直接去實踐一下,沒有spring和有spring寫一下創(chuàng)建對象的代碼有啥不同,加深對框架的理解,只有清楚了整個框架帶來的價值之后,分析源碼才能避免“不識廬山真面目” 的尷尬。

區(qū)分jar的邊界與職責(zé),很多框架都是一堆的jar去不斷的集成,我們分析源碼首先要宏觀的去看待整個框架做了什么事情,然后再分清楚每個jar對應(yīng)大概做了什么事情,然后這樣就能在分析源碼的時候盡量不迷路。

抽象思維,對于開源框架來說,其很重要的一個特性就是要把通用需求給穩(wěn)定化,在此基礎(chǔ)上進行迭代,不斷的添加最新的特性,在這個過程中保持良好的兼容性與擴展性,這就要求對其他框架采取解耦的方案,保持非入侵的方式。這樣帶來的代碼上的體現(xiàn)就是處處是接口,處處是抽象類,很多方法都是模板方法。這里的行話,就是不要“寫死”。依賴抽象而不是實現(xiàn),這樣就可以盡量的松耦合,所以有意識的增強對于接口和抽象類的理解,所以很多人也認為 要比較好的閱讀源碼首先要熟悉經(jīng)典設(shè)計模式與設(shè)計原則等面向?qū)ο罄碚摗?/p>

底層代碼能力,這一塊是對于一些偏底層的一些技術(shù)實現(xiàn)的熟悉,例如反射,動態(tài)代理,字節(jié)碼植入,或則是范型的使用,函數(shù)編程等語法糖的熟悉。當(dāng)然如果能熟悉JUC包的東西,多線程的理解也非常重要。

帶著問題看源碼,單純的閱讀的確很容易枯燥,但是我們在使用的過程中,由于前期可能主要關(guān)注在如何快速上手可能網(wǎng)上隨便搜索入門教程就開始使用后,滿足了日常工作需求就沒再深入的動力,但是其中某個特性為什么實現(xiàn),例如mybatis定義的mapper接口沒有實現(xiàn)類,是如何注入到spring容器,帶著這樣的疑問,我們就很自然的產(chǎn)生了好奇心。

畫圖,圖像是比文字更容易加強記憶和理解的東西,語言是后天的,但眼睛是天生的,我們應(yīng)該善于利用這點,閱讀感覺有點混亂的時候就開始進行思維導(dǎo)圖的整理,流程圖的整理等等,這樣的腦圖是很有價值的,當(dāng)然也不要因此打斷閱讀的連貫性,而是一個大的階段整理一下即可,每個人的邏輯思維強度會有些不同,可以按需掌握節(jié)奏。

評論0 贊同0
  •  加載中...
233jl

233jl

回答于2022-06-22 18:29

犯困就對了,剛開始看不暈才是不正常的,這東西看個大概就行,除非你真需要這一塊兒的設(shè)計模式,否則就算看懂,不到兩天保準(zhǔn)兒忘,建議還是會用,而不是上來就研究源碼,而且這東西每版源碼都不一樣看不過來,如果不是在大廠去研發(fā)新框架就沒啥必要看源碼

評論0 贊同0
  •  加載中...
only_do

only_do

回答于2022-06-22 18:29

看一天是不可能看明白的,我看spring源碼看了一個星期才開始看明白,堅持了一個多月才看明白容器部分。至于注解部分,我沒有空過,僅僅分析過scope注解。注解要看明白,要找到注解的processor,注解本身并沒有什么內(nèi)容。找到Processor,才能知道注解的真相。

評論0 贊同0
  •  加載中...
dongfangyiyu

dongfangyiyu

回答于2022-06-22 18:29

看源碼要先懂設(shè)計模式

評論0 贊同0
  •  加載中...
whlong

whlong

回答于2022-06-22 18:29

其實直接看源碼就是比較讓人難以琢磨的,因為很多時候源碼的底層是計算機深層技術(shù),和

表面看到的邏輯是不大一樣的,源碼分析,可以從某一個技術(shù)點來看,自己看純理論的說明

的話,倒不如看一些圖例分析或者視頻講解來得更明了一些,只要是大白話一些能給你舉幾

個現(xiàn)實的事物比較,就更加形象啦,比如說一個bean實例的創(chuàng)建過程,可以看看這篇文章,

https://m.toutiaocdn.com/i6745978831934325260/?app=news_article&timestamp=1593417076&use_new_style=1&req_id=202006291551150101300371352404BFFB&group_id=6745978831934325260

看看不同時期做的具體操作和為什么這樣的做,源碼的底層一般效率都是比較高的,尤其

這種設(shè)計風(fēng)格,在以后自己的代碼風(fēng)格中可以多多借鑒! 就像通信技術(shù),簡單地看一個短連接和長連接的區(qū)別,以及這樣做的優(yōu)缺點,加以分析和比較![呲牙][呲牙][呲牙]

評論0 贊同0
  •  加載中...
frontoldman

frontoldman

回答于2022-06-22 18:29

建議先買本spring的書籍,先把框架的原理看懂,再來看源碼

評論0 贊同0
  •  加載中...
劉明

劉明

回答于2022-06-22 18:29

帶著問題去看代碼,為了解決問題去看代碼,如果不是為了具體的開發(fā)目標(biāo),而是為了提高技術(shù)水平,應(yīng)該按教程學(xué)習(xí)或自己開發(fā)開源軟件。 這類似于學(xué)習(xí)語言,放到 這個語言的環(huán)境下,經(jīng)過一段時間,無意識就學(xué)會了。而想考高分而突擊背單詞,肯定一背就犯困。就比如這個問題,transaction 你看懂后,是要修改transaction 哪部分功能? 到達什么目的,先把這些想清楚

評論0 贊同0
  •  加載中...
fai1017

fai1017

回答于2022-06-22 18:29

評論0 贊同0
  •  加載中...
gplane

gplane

回答于2022-06-22 18:29

得有人帶一下,體系太龐大,像一座原始森林,要有總體認識,和關(guān)鍵點分析,不然分分鐘迷路,過了那一關(guān)越看越有意思

評論0 贊同0
  •  加載中...

相關(guān)問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<