我們是在使用Spring框架的過程中,其實就是為了使用IOC,依賴注入,和AOP,面向切面編程,這兩個是Spring的靈魂。 主要用到的設計模式有工廠模式和代理模式。 IOC就是典型的工廠模式,通過sessionfactory去注入實例。 AOP就是典型的代理模式的體現(xiàn)。
代理模式是常用的java設計模式,他的特征是代理類與委托類有同樣的接口,代理類主要負責為委托類預處理消息、過濾消息、把消息轉發(fā)給委托類,以及事后處理消息等。代理類與委托類之間通常會存在關聯(lián)關系,一個代理類的對象與一個委托類的對象關聯(lián),代理類的對象本身并不真正實現(xiàn)服務,而是通過調(diào)用委托類的對象的相關方法,來提供特定的服務。
spring的IoC容器是spring的核心,spring AOP是spring框架的重要組成部分。 在傳統(tǒng)的程序設計中,當調(diào)用者需要被調(diào)用者的協(xié)助時,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例。但在spring里創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此控制反轉(IoC);創(chuàng)建被調(diào)用者實例的工作通常由spring容器來完成,然后注入調(diào)用者,因此也被稱為依賴注入(DI), 依賴注入和控制反轉是同一個概念 。
面向方面編程(AOP)是以另一個角度來考慮程序結構
,通過分析程序結構的關注點來完善面向?qū)ο缶幊蹋∣OP)。OOP將應用程序分解成各個層次的對象,而AOP將程序分解成多個切面。spring AOP 只實現(xiàn)了方法級別的連接點,在J2EE應用中,AOP攔截到方法級別的操作就已經(jīng)足夠。在spring中,未來使IoC方便地使用健壯、靈活的企業(yè)服務,需要利用spring AOP實現(xiàn)為IoC和企業(yè)服務之間建立聯(lián)系。
AOP:面向切面編程。(Aspect-Oriented Programming)
實現(xiàn)AOP的技術,主要分為兩大類:一是采用動態(tài)代理技術,利用截取消息的方式,對該消息進行裝飾,以取代原有對象行為的執(zhí)行;二是采用靜態(tài)織入的方式,引入特定的語法創(chuàng)建“方面”,從而使得編譯器可以在編譯期間織入有關“方面”的代碼. 簡單點解釋,比方說你想在你的biz層所有類中都加上一個打印‘你好’的功能,這時就可以用aop思想來做.你先寫個類寫個類方法,方法經(jīng)實現(xiàn)打印‘你好’,然后Ioc這個類 ref=“biz.*”讓每個類都注入即可實現(xiàn)。 |
|