AI與DI區(qū)別 面試題:Spring中IOC和DI的含義。應(yīng)該怎么答?
面試題:Spring中IOC和DI的含義。應(yīng)該怎么答?IOC是控制翻轉(zhuǎn)或依賴注入。一般來(lái)說(shuō),如果您需要某個(gè)對(duì)象,您不需要通過(guò)new生成您需要的對(duì)象,但是您需要通過(guò)spring的bean工廠為您生成這樣
面試題:Spring中IOC和DI的含義。應(yīng)該怎么答?
IOC是控制翻轉(zhuǎn)或依賴注入。一般來(lái)說(shuō),如果您需要某個(gè)對(duì)象,您不需要通過(guò)new生成您需要的對(duì)象,但是您需要通過(guò)spring的bean工廠為您生成這樣一個(gè)對(duì)象。AOP是面向方面的編程。例如,每次執(zhí)行數(shù)據(jù)庫(kù)操作時(shí),都必須生成日志。如果您有許多數(shù)據(jù)庫(kù)操作類,那么應(yīng)該為每個(gè)類中的日志編寫方法。但是如果使用AOP,就可以編寫一個(gè)方法。在這個(gè)方法中,有關(guān)于數(shù)據(jù)庫(kù)操作的方法。每次調(diào)用此方法時(shí),都會(huì)添加生成日志的操作。不太清楚。你可以通過(guò)多寫多讀來(lái)理解它。它是由依賴注入(di)實(shí)現(xiàn)的。例如,對(duì)象a需要操作數(shù)據(jù)庫(kù)。在過(guò)去,我們總是要在一個(gè)數(shù)據(jù)庫(kù)中編寫自己的代碼來(lái)獲取連接對(duì)象。對(duì)于spring,我們只需要告訴spring在a中需要一個(gè)連接。至于如何以及何時(shí)構(gòu)造連接,a不需要知道。當(dāng)系統(tǒng)運(yùn)行時(shí),spring會(huì)在適當(dāng)?shù)臅r(shí)候創(chuàng)建一個(gè)連接,然后像注入一樣注入到一個(gè)對(duì)象中,從而完成對(duì)各個(gè)對(duì)象之間關(guān)系的控制。A需要依靠連接才能正常運(yùn)行,而此連接是通過(guò)彈簧注入A的。這就是依賴注入的名字。
什么是IOC?
IOC,即控制反轉(zhuǎn)(inversionofcontrol,IOC),是減少計(jì)算機(jī)程序耦合的一個(gè)重要的面向?qū)ο缶幊淘?,也是輕量級(jí)spring框架的核心。有兩種類型的控制反轉(zhuǎn):依賴注入(DI)和依賴查找。IOC的優(yōu)點(diǎn):實(shí)現(xiàn)了組件間的解耦,提高了程序的靈活性和可維護(hù)性。國(guó)際奧委會(huì)的缺點(diǎn):1。創(chuàng)建對(duì)象的步驟變得復(fù)雜而不直觀。當(dāng)然,這是為那些不習(xí)慣這種方法的人準(zhǔn)備的。
2. 因?yàn)榉瓷浔挥脕?lái)創(chuàng)建對(duì)象,所以會(huì)損失效率。但與程序的靈活性和可維護(hù)性相比,這種損失可以忽略不計(jì)。
3. 沒(méi)有ide重構(gòu)支持。如果修改類名,則需要在XML文件中手動(dòng)修改。這似乎是所有XML方法的缺點(diǎn)。IOC的應(yīng)用:IOC模式從程序中刪除耦合代碼,并將其放入統(tǒng)一的XML文件中進(jìn)行管理。IOC容器通過(guò)配置文件管理對(duì)象的生命周期和依賴關(guān)系,不需要修改和編譯特定的代碼,實(shí)現(xiàn)組件間的解耦。
什么是IoC?
IOC,即控制反轉(zhuǎn),描述如下。
1. 定義:控制反轉(zhuǎn)(inversionofcontrol,IOC)賦予框架創(chuàng)建對(duì)象的權(quán)利,這是框架的一個(gè)重要特性,而不是面向?qū)ο缶幊痰膶S眯g(shù)語(yǔ)。它包括依賴注入(DI)和依賴查找。
2. IOC的最大優(yōu)點(diǎn)是它定義了XML中對(duì)象的生成,因此當(dāng)我們需要更改實(shí)現(xiàn)子類時(shí),它將非常簡(jiǎn)單(通常,這類對(duì)象是在某些接口上實(shí)現(xiàn)的)。我們只需要修改XML,這樣我們甚至可以實(shí)現(xiàn)對(duì)象的熱交換(有點(diǎn)像USB接口和SCSI硬盤)。
3. IOC的最大缺點(diǎn)如下:
(1)生成對(duì)象的步驟變得更加復(fù)雜(實(shí)際上,操作非常簡(jiǎn)單)。對(duì)于那些不習(xí)慣這種方法的人來(lái)說(shuō),他們會(huì)覺(jué)得有點(diǎn)尷尬和不直觀。(2) 對(duì)象生成采用反射編程,在效率上有一定的損失。然而,與改進(jìn)的IOC的可維護(hù)性和靈活性相比,這種損失可以忽略不計(jì),除非對(duì)象的生成需要高效率。(3) 沒(méi)有ide重構(gòu)支持。如果要在eclipse中重命名類,需要在XML文件中手動(dòng)重命名。這似乎是所有XML方法的缺陷。