簡(jiǎn)述spring的ioc和di 自動(dòng)注入到底比new好在哪?
自動(dòng)注入到底比new好在哪?控制反轉(zhuǎn)和容器IOC只能看作是一種編程思想。在理想狀態(tài)下,可以實(shí)現(xiàn)自動(dòng)注射和生命周期管理。但在實(shí)際的開(kāi)發(fā)中,我個(gè)人覺(jué)得有時(shí)不如新的方便,我主要遇到以下問(wèn)題:1。編寫(xiě)大量的配
自動(dòng)注入到底比new好在哪?
控制反轉(zhuǎn)和容器IOC只能看作是一種編程思想。在理想狀態(tài)下,可以實(shí)現(xiàn)自動(dòng)注射和生命周期管理。但在實(shí)際的開(kāi)發(fā)中,我個(gè)人覺(jué)得有時(shí)不如新的方便,我主要遇到以下問(wèn)題:
1。編寫(xiě)大量的配置和構(gòu)造函數(shù)要比編寫(xiě)新的更麻煩,特別是對(duì)于某些函數(shù)來(lái)說(shuō),只需一次。原來(lái),new可以一次性完成,但是如果要使用依賴注入,還需要編寫(xiě)配置
2。當(dāng)需要注入更多的類時(shí),構(gòu)造函數(shù)就像老婦人的裹尸布一樣臭,一樣長(zhǎng)。關(guān)鍵是以前用過(guò)的一些類現(xiàn)在不用了,你要手動(dòng)清理構(gòu)造函數(shù),這比new要麻煩多了
3。這也是最重要的一點(diǎn),有時(shí)候項(xiàng)目很復(fù)雜,會(huì)遇到循環(huán)注入的問(wèn)題。也就是說(shuō),A依賴B,B依賴C,C依賴A,這種情況說(shuō)明架構(gòu)的存在是不合理的。在這一點(diǎn)上,你可以重構(gòu)系統(tǒng),也可以不依賴依賴依賴注入,直接用新的方法來(lái)解決它。]因此,依賴注入只是一種編程思想,有一些高級(jí)的性質(zhì),但不是。它是萬(wàn)能的。它存在的意義是脫鉤。從宏觀上講,就是要解決多人共同開(kāi)發(fā)一個(gè)項(xiàng)目時(shí),各自獨(dú)立的模塊,減少相互之間的依賴和干擾。從微觀的角度看,有幾個(gè)類是密切相關(guān)的。雖然文件是獨(dú)立的,但是功能是集成的。在這個(gè)時(shí)候,脫鉤是沒(méi)有意義的。為什么不是新的?
因此,我個(gè)人理解依賴注入與引擎是一樣的。發(fā)動(dòng)機(jī)由幾個(gè)主要部件組成。這些組件之間是解耦的,可以通過(guò)依賴注入來(lái)實(shí)現(xiàn)。對(duì)于單個(gè)組件的內(nèi)部部件和螺釘,必須使用依賴注入來(lái)實(shí)現(xiàn)它們。這比收益多一點(diǎn)。使用new來(lái)實(shí)現(xiàn)它們要方便得多。。。[Pick nose][Pick nose][Pick nose][Pick nose][Pick nose][Pick nose][Pick nose][Pick nose
任何語(yǔ)言的問(wèn)題實(shí)際上都是一樣的。從一門(mén)語(yǔ)言開(kāi)始,我們首先需要了解語(yǔ)言語(yǔ)法(可以使用),然后了解標(biāo)準(zhǔn)庫(kù)(可以使用)。有了這兩個(gè)步驟和對(duì)其他語(yǔ)言的一點(diǎn)了解,我們就可以開(kāi)始了。我們學(xué)?,F(xiàn)在招收了很多畢業(yè)生,經(jīng)過(guò)1-2個(gè)月的輔導(dǎo),到了這個(gè)階段。
剩下的是第三步,通過(guò)項(xiàng)目或產(chǎn)品的實(shí)踐加深對(duì)技術(shù)和業(yè)務(wù)的理解。在這個(gè)階段,我們通常依靠自學(xué)、谷歌和理解。兩三年后,我們可以發(fā)現(xiàn),有些人對(duì)技術(shù)和業(yè)務(wù)的了解很深(老手),有些人還很膚淺。這段時(shí)間通常是另一個(gè)跳槽階段。在這個(gè)時(shí)候,不同的人的工資水平會(huì)有很大的差異。
總而言之,程序員最重要的是持續(xù)學(xué)習(xí)(第三階段)。事實(shí)上,IT行業(yè)是一個(gè)需要不斷學(xué)習(xí)的行業(yè)(因?yàn)榧夹g(shù)更新太快)。初出茅廬,我們都有同樣的基礎(chǔ)和能力。這一差距將在2-3年后出現(xiàn)。如果你是貧窮的一方,那就意味著你工作不夠努力。
最后,Java主要用于服務(wù)器。由于其出色的內(nèi)存管理,它阻止了許多程序員的能力差異(能力較弱的程序員可以編寫(xiě)較少的糟糕系統(tǒng)),并且適合于長(zhǎng)期的服務(wù)器項(xiàng)目(如web和其他非UI應(yīng)用程序)。
雖然也有優(yōu)秀的UI庫(kù)(如SWT)和優(yōu)秀的桌面應(yīng)用程序(如idea、eclipse和netbean),但是桌面軟件應(yīng)用程序仍然很少,需要帶JRE,所以負(fù)擔(dān)相對(duì)較大。