做數(shù)據(jù)收集網(wǎng)站百度競價登錄入口
相信學(xué)做Java開發(fā)的同學(xué)從開始工作時就被問及什么是spring的依賴注入,以及切面編程。今天我們簡單再聊聊這兩個概念。
依賴注入
這里的依賴不是動詞依賴依靠的意思,而是名詞??梢园堰@兩個詞翻過來讀下”注入依賴“,所謂的依賴可以理解成一個類有很多屬性,這些屬性就是這里的依賴,依賴注入就是spring可以自動注入你寫的這個類定義的這些屬性。
有一種你只管想象或者定義,而spring為你構(gòu)造實(shí)現(xiàn)的味道。當(dāng)你的工程有幾百上千個類時依賴的自動注入將極大簡化代碼邏輯使程序員們專注于業(yè)務(wù)。
spring的aop能力
aop不是spring獨(dú)創(chuàng),這只是一個編程思想或者方法,指的是在某段程序前后執(zhí)行另一段代碼邏輯,以滿足對具有相同特性的代碼邏輯做通用的處理。比如你想對所有在xxx包下的方法執(zhí)行前先校驗(yàn)用戶權(quán)限,那么切面編程是最好的選擇,它可以為了省了在每個方法前都調(diào)用一遍權(quán)限校驗(yàn)的邏輯。
看似簡單的兩個能力spring卻對其玩出了花,比如依賴注入就有多種方式實(shí)現(xiàn),如可以設(shè)置按名稱注入,按類型注入或者使用構(gòu)造器自動注入等,又或者通過注解指定來注入,注解又有不同。而在注入前的準(zhǔn)備也是一件復(fù)雜的工作,得先對需要注入的依賴進(jìn)行標(biāo)記,而標(biāo)記手段可以有很多種,比如通過xml文件來配置,或者通過注解來指定。標(biāo)記后得讀取所標(biāo)記的文件還得判斷被標(biāo)記的文件是否符號自動注入條件,比如對于抽象類無法注入等判斷。
所以一個優(yōu)秀的開源框架往往寫的十分復(fù)雜,細(xì)節(jié)考慮的方方面面代碼量也會變得很大,而對于那些想閱讀其源碼了解其原理的人來說一開始可能并不是一件容易的事。而我作為一個10年老程序員斗膽說一些自己的淺見。入行IT也是機(jī)緣巧合,記得剛?cè)胄袝r最怕的就是ssh,分別是spring,structs,hibernate其中spring是最讓我頭大的真的是一點(diǎn)不懂,無數(shù)的xml配置仿佛是天書一般讓人從心底開始生畏,正由于害怕導(dǎo)致似乎大腦開始抵觸似的更難接受相關(guān)知識。而到如今到信手拈來,其中的經(jīng)驗(yàn)個人覺得簡單總結(jié)就是看多了用多了熟悉了。這里的看多了我的做法是看優(yōu)秀的前人寫的博客,不論是使用用法還是源碼講解都看還要自己嘗試去閱讀spring源碼;用多了自然是工作中無時無刻都離不開spring,因?yàn)橄嘈艊鴥?nèi)的互聯(lián)網(wǎng)公司除了一些特別的大廠可能會自研框架代替spring大都是使用spring吧。
或許大家從中發(fā)現(xiàn)我這個經(jīng)驗(yàn)似乎沒有什么技巧并談不上什么好的學(xué)習(xí)方法,只是簡單的日積月累式的階梯增長罷了,換任何人干個十年八年的一樣可以,或者比我做得更好。我覺得你這么想沒毛病,我是認(rèn)同的,因?yàn)閷τ趕pring框架來說并沒有多少復(fù)雜的算法需要多聰明的大腦,只要你肯花時間多看多學(xué)還是容易學(xué)的通的。
如果非要談一些學(xué)習(xí)經(jīng)驗(yàn)的話,我也想談?wù)勎业目捶ú灰欢▽H供參考。
第1步:找到適合自己的學(xué)習(xí)資料。很多大腦建議新人學(xué)習(xí)一個新東西時都建議去看官網(wǎng),官網(wǎng)確實(shí)是非常完整的學(xué)習(xí)資料,但對很多新手來說不太友好。比如一些人英語很不好而框架官網(wǎng)都是英文學(xué)習(xí)起來很費(fèi)勁。有些官網(wǎng)寫的可能也并不是很時候新手入門。
我的建議是先找一些博客文章做一些簡單入門了解再做打算
第2步:確定學(xué)習(xí)方向。對于你想學(xué)的東西確定你想學(xué)習(xí)的深度和方向,比如你希望即會用spring又可以了解ioc的原理
第3步:盡量弄清楚你要學(xué)的框架的總體架構(gòu)和特性,看博客配合官網(wǎng)對其有個總體上的認(rèn)識。
第4步:制定目標(biāo)嚴(yán)格執(zhí)行。如前兩周學(xué)會其使用方法;接下來三周看完ioc相關(guān)源碼。
第5步:輸出博客或者筆記。
第6步:公司技術(shù)分享會開始裝逼。