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

亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

問(wèn)答專欄Q & A COLUMN

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

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

10條回答

馬忠志

馬忠志

回答于2022-06-22 18:29

因?yàn)閟pring的意思是春天,春困秋乏懂不

評(píng)論0 贊同0
  •  加載中...
garfileo

garfileo

回答于2022-06-22 18:29

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

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

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

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

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

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

評(píng)論0 贊同0
  •  加載中...
233jl

233jl

回答于2022-06-22 18:29

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

評(píng)論0 贊同0
  •  加載中...
only_do

only_do

回答于2022-06-22 18:29

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

評(píng)論0 贊同0
  •  加載中...
dongfangyiyu

dongfangyiyu

回答于2022-06-22 18:29

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

評(píng)論0 贊同0
  •  加載中...
whlong

whlong

回答于2022-06-22 18:29

其實(shí)直接看源碼就是比較讓人難以琢磨的,因?yàn)楹芏鄷r(shí)候源碼的底層是計(jì)算機(jī)深層技術(shù),和

表面看到的邏輯是不大一樣的,源碼分析,可以從某一個(gè)技術(shù)點(diǎn)來(lái)看,自己看純理論的說(shuō)明

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

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

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

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

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

評(píng)論0 贊同0
  •  加載中...
frontoldman

frontoldman

回答于2022-06-22 18:29

建議先買本spring的書(shū)籍,先把框架的原理看懂,再來(lái)看源碼

評(píng)論0 贊同0
  •  加載中...
劉明

劉明

回答于2022-06-22 18:29

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

評(píng)論0 贊同0
  •  加載中...
fai1017

fai1017

回答于2022-06-22 18:29

,

評(píng)論0 贊同0
  •  加載中...
gplane

gplane

回答于2022-06-22 18:29

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

評(píng)論0 贊同0
  •  加載中...

相關(guān)問(wèn)題

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

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