spring框架是java應(yīng)用最廣的框架栈妆,他的成功源于理念涕蜂,而不是技術(shù)本身析校;
Ioc是一個(gè)容器礁哄,
IOC:Inversion of Control控制反轉(zhuǎn)长酗,也叫(Dependency Injection)依賴注入, dao接口的實(shí)現(xiàn)不再是業(yè)務(wù)邏輯層調(diào)用工廠類去獲取桐绒,而是通過(guò)容器(spring)來(lái)自動(dòng)的為我們的業(yè)務(wù)層設(shè)置Dao的實(shí)現(xiàn)類夺脾,這樣整個(gè)過(guò)程就反過(guò)來(lái),以前是我們業(yè)務(wù)層主動(dòng)去獲取dao茉继,而現(xiàn)在是dao主動(dòng)被設(shè)置到業(yè)務(wù)邏輯層中來(lái)了咧叭,這個(gè)也就是反轉(zhuǎn)控制的由來(lái)。通過(guò)IOC烁竭,我們就可以在不修改任何代碼的情況下菲茬,無(wú)縫地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的換庫(kù)遷移
簡(jiǎn)單一點(diǎn)說(shuō):
IOC就是一個(gè)生產(chǎn)和管理bean的容器就行了,原來(lái)需要在調(diào)用類中new的東西派撕,現(xiàn)在都是通過(guò)容器生成婉弹,同時(shí),要是產(chǎn)生的是單例的bean终吼,他還可以給管理bean的生命周期镀赌。
aop 是一個(gè)切面 也可以理解是攔截器
AOP面向切面編程將程序中的交叉業(yè)務(wù)邏輯(比如安全,日志际跪,事務(wù))商佛,封裝成一個(gè)切面,然后注入到目標(biāo)業(yè)務(wù)邏輯中去姆打。
比如:很多方法都可能會(huì)拋異常良姆,你要記錄這個(gè)異常到日志中去,可以寫個(gè)攔截器穴肘,在這個(gè)類中記錄日志歇盼,在spring.xml中配置一個(gè)記錄這些日志的方法的攔截器,在這個(gè)方法執(zhí)行后調(diào)用這個(gè)攔截器评抚,記錄日志豹缀。這樣就不用每次拋異常都要手動(dòng)記錄日志伯复。
spring的事務(wù)管理用到的就是AOP這樣也可以提高程序的內(nèi)聚性。