依賴(lài)注入是什么?DI ---- Dependency Injection
簡(jiǎn)單的來(lái)說(shuō),就是當(dāng)一個(gè)對(duì)象產(chǎn)生時(shí),同時(shí)會(huì)產(chǎn)生一個(gè)它所需要調(diào)用的內(nèi)置對(duì)象。并且這個(gè)內(nèi)置調(diào)用對(duì)象是能夠由外部所控制產(chǎn)生的
控制翻轉(zhuǎn)是什么?IOC ---- Inversion of Control
原本當(dāng)在一個(gè)對(duì)象A內(nèi)需要調(diào)用另一個(gè)對(duì)象B時(shí),一般都是new 一個(gè)。這種方法比較hardcore。也就是說(shuō)所new的被調(diào)用對(duì)象的自主權(quán)在對(duì)象A,一般都是寫(xiě)死的,如果需要調(diào)用另一個(gè)對(duì)象,那么需要到內(nèi)部去修改代碼。這種時(shí)候,如果我們把對(duì)象A需要調(diào)用的對(duì)象在外部配置,那么這種控制權(quán)就到了外部。也就是所謂的控制翻轉(zhuǎn)。 打個(gè)比喻就是由自由戀愛(ài)轉(zhuǎn)變?yōu)榱税k婚姻。
面向切面編程是什么?AOP
通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。
也就是說(shuō)當(dāng)我們?cè)谝粋€(gè)request中執(zhí)行某個(gè)method時(shí),在method方法中間切一個(gè)面,將我們的代碼動(dòng)態(tài)的參與到這個(gè)切面之前以及之后。
這樣做的好處就是降低了代碼的耦合性。
Spring基本原理
- 所有類(lèi)都是bean,都需要在xml文件中注冊(cè)。
- A類(lèi)調(diào)用B or C類(lèi),B,C類(lèi)是M接口的實(shí)現(xiàn)方法。
- 在A類(lèi)xml的配置條目中,設(shè)定調(diào)用的類(lèi)名。
- 在程序一開(kāi)始通過(guò)
ApplicationContext context=
new ClassPathXmlApplicationContext("beans.xml");
···
讀取xml文件,并且通過(guò)IOC控制器將xml配置中調(diào)用的類(lèi)名讀取,通過(guò)反射機(jī)制(reflect) 在運(yùn)行過(guò)程中找到該類(lèi)并將該類(lèi)通過(guò)A類(lèi)中的set方法注入進(jìn)A類(lèi)。