1 引言
AOP(Aspected Oriented Programming)是一種新興的編程技術(shù)。它可以解決OOP和過程化方法不能夠很好解決的橫切(crosscut)問題,如:事務(wù)、安全、日志等橫切關(guān)注。當(dāng)未來系統(tǒng)變得越來越復(fù)雜,橫切關(guān)注點(diǎn)就成為一個(gè)打問題的時(shí)候,AOP就可以很輕松的解決橫切關(guān)注點(diǎn)這個(gè)問題,使得AOP編程成為。Spring 是基于J2EE的輕量級(jí)開源開發(fā)框架,其中Spring AOP組件實(shí)現(xiàn)了面向方面編程。
2 AOP 概述
面向方面編程 (AOP) 提供從另一個(gè)角度來考慮程序結(jié)構(gòu)以完善面向?qū)ο缶幊?OOP)。 面向?qū)ο髮?yīng)用程序分解成各個(gè)層次的對(duì)象,而AOP將程序分解成各個(gè)方面或者說關(guān)注點(diǎn) 。這使得可以模塊化諸如事務(wù)管理等這些橫切多個(gè)對(duì)象的關(guān)注點(diǎn)。
2.1 AOP 基本概念
方面(Aspect): 一個(gè)關(guān)注點(diǎn)的模塊化,這個(gè)關(guān)注點(diǎn)實(shí)現(xiàn)可能另外橫切多個(gè)對(duì)象。事務(wù)管理是J2EE應(yīng)用中一個(gè)很好的橫切關(guān)注點(diǎn)例子。方面用Spring的 Advisor或攔截器實(shí)現(xiàn)。
連接點(diǎn)(Joinpoint): 程序執(zhí)行過程中明確的點(diǎn),如方法的調(diào) 用或特定的異常被拋出。
通知(Advice): 在特定的連接點(diǎn),AOP框架執(zhí)行的動(dòng)作。各種類 型的通知包括“around”、“before”和“throws”通知。通知類型將在下面討論。許多AOP框架 包括Spring都是以攔截器做通知模型,維護(hù)一個(gè)“圍繞”連接點(diǎn)的攔截器鏈。
切入點(diǎn)(Pointcut): 指定一個(gè)通知將被引發(fā)的一系列連接點(diǎn) 的集合。AOP框架必須允許開發(fā)者指定切入點(diǎn):例如,使用正則表達(dá)式。
引入(Introduction): 添加方法或字段到被通知的類。 Spring允許引入新的接口到任何被通知的對(duì)象。例如,你可以使用一個(gè)引入使任何對(duì)象實(shí)現(xiàn) IsModified接口,來簡(jiǎn)化緩存。
目標(biāo)對(duì)象(Target Object): 包含連接點(diǎn)的對(duì)象。也被稱作 被通知或被代理對(duì)象。
AOP代理(AOP Proxy): AOP框架創(chuàng)建的對(duì)象,包含通知。 在Spring中,AOP代理可以是JDK動(dòng)態(tài)代理或者CGLIB代理。
織入(Weaving): 組裝方面來創(chuàng)建一個(gè)被通知對(duì)象。這可以在編譯時(shí) 完成(例如使用AspectJ編譯器),也可以在運(yùn)行時(shí)完成。Spring和其他純Java AOP框架一樣, 在運(yùn)行時(shí)完成織入。
3 Spring AOP 介紹
Spring的一個(gè)關(guān)鍵組件就是AOP框架。 Spring IoC容器(BeanFactory 和ApplicationContext)并不依賴于AOP, 這意味著如果你不需要使用,AOP可以不用,AOP完善了Spring IoC,使之成為一個(gè)有效的中間件解決方案。
Spring AOP 是Spring 框架的重要組成部分,它實(shí)現(xiàn)了AOP聯(lián)盟約定的接口。Spring AOP 是由純Java開發(fā)完成的。Spring AOP 只實(shí)現(xiàn)了方法級(jí)別的連接點(diǎn),在J2EE應(yīng)用中,AOP攔截到方法級(jí)的操作已經(jīng)足夠。OOP倡導(dǎo)的是基于setter/getter 的方法訪問,而非直接訪問域,而Spring 有足夠理由僅僅提供方法級(jí)的連接點(diǎn)。為了使控制反轉(zhuǎn)(IoC)很方便的使用到非常健壯、靈活的企業(yè)服務(wù),則需要Spring AOP 的實(shí)現(xiàn)。Spring AOP 在運(yùn)行時(shí)才創(chuàng)建Advice 對(duì)象。Spring AOP的優(yōu)點(diǎn)如下:
允許開發(fā)者使用聲明式企業(yè)服務(wù),比如事務(wù)服務(wù)、安全性服務(wù)。
開發(fā)者可以開發(fā)滿足業(yè)務(wù)需求的自定義方面。
開發(fā)Spring AOP Advice 很方便,可以借助代理類快速搭建Spring AOP 應(yīng)用。
AOP(Aspected Oriented Programming)是一種新興的編程技術(shù)。它可以解決OOP和過程化方法不能夠很好解決的橫切(crosscut)問題,如:事務(wù)、安全、日志等橫切關(guān)注。當(dāng)未來系統(tǒng)變得越來越復(fù)雜,橫切關(guān)注點(diǎn)就成為一個(gè)打問題的時(shí)候,AOP就可以很輕松的解決橫切關(guān)注點(diǎn)這個(gè)問題,使得AOP編程成為。Spring 是基于J2EE的輕量級(jí)開源開發(fā)框架,其中Spring AOP組件實(shí)現(xiàn)了面向方面編程。
2 AOP 概述
面向方面編程 (AOP) 提供從另一個(gè)角度來考慮程序結(jié)構(gòu)以完善面向?qū)ο缶幊?OOP)。 面向?qū)ο髮?yīng)用程序分解成各個(gè)層次的對(duì)象,而AOP將程序分解成各個(gè)方面或者說關(guān)注點(diǎn) 。這使得可以模塊化諸如事務(wù)管理等這些橫切多個(gè)對(duì)象的關(guān)注點(diǎn)。
2.1 AOP 基本概念
方面(Aspect): 一個(gè)關(guān)注點(diǎn)的模塊化,這個(gè)關(guān)注點(diǎn)實(shí)現(xiàn)可能另外橫切多個(gè)對(duì)象。事務(wù)管理是J2EE應(yīng)用中一個(gè)很好的橫切關(guān)注點(diǎn)例子。方面用Spring的 Advisor或攔截器實(shí)現(xiàn)。
連接點(diǎn)(Joinpoint): 程序執(zhí)行過程中明確的點(diǎn),如方法的調(diào) 用或特定的異常被拋出。
通知(Advice): 在特定的連接點(diǎn),AOP框架執(zhí)行的動(dòng)作。各種類 型的通知包括“around”、“before”和“throws”通知。通知類型將在下面討論。許多AOP框架 包括Spring都是以攔截器做通知模型,維護(hù)一個(gè)“圍繞”連接點(diǎn)的攔截器鏈。
切入點(diǎn)(Pointcut): 指定一個(gè)通知將被引發(fā)的一系列連接點(diǎn) 的集合。AOP框架必須允許開發(fā)者指定切入點(diǎn):例如,使用正則表達(dá)式。
引入(Introduction): 添加方法或字段到被通知的類。 Spring允許引入新的接口到任何被通知的對(duì)象。例如,你可以使用一個(gè)引入使任何對(duì)象實(shí)現(xiàn) IsModified接口,來簡(jiǎn)化緩存。
目標(biāo)對(duì)象(Target Object): 包含連接點(diǎn)的對(duì)象。也被稱作 被通知或被代理對(duì)象。
AOP代理(AOP Proxy): AOP框架創(chuàng)建的對(duì)象,包含通知。 在Spring中,AOP代理可以是JDK動(dòng)態(tài)代理或者CGLIB代理。
織入(Weaving): 組裝方面來創(chuàng)建一個(gè)被通知對(duì)象。這可以在編譯時(shí) 完成(例如使用AspectJ編譯器),也可以在運(yùn)行時(shí)完成。Spring和其他純Java AOP框架一樣, 在運(yùn)行時(shí)完成織入。
3 Spring AOP 介紹
Spring的一個(gè)關(guān)鍵組件就是AOP框架。 Spring IoC容器(BeanFactory 和ApplicationContext)并不依賴于AOP, 這意味著如果你不需要使用,AOP可以不用,AOP完善了Spring IoC,使之成為一個(gè)有效的中間件解決方案。
Spring AOP 是Spring 框架的重要組成部分,它實(shí)現(xiàn)了AOP聯(lián)盟約定的接口。Spring AOP 是由純Java開發(fā)完成的。Spring AOP 只實(shí)現(xiàn)了方法級(jí)別的連接點(diǎn),在J2EE應(yīng)用中,AOP攔截到方法級(jí)的操作已經(jīng)足夠。OOP倡導(dǎo)的是基于setter/getter 的方法訪問,而非直接訪問域,而Spring 有足夠理由僅僅提供方法級(jí)的連接點(diǎn)。為了使控制反轉(zhuǎn)(IoC)很方便的使用到非常健壯、靈活的企業(yè)服務(wù),則需要Spring AOP 的實(shí)現(xiàn)。Spring AOP 在運(yùn)行時(shí)才創(chuàng)建Advice 對(duì)象。Spring AOP的優(yōu)點(diǎn)如下:
允許開發(fā)者使用聲明式企業(yè)服務(wù),比如事務(wù)服務(wù)、安全性服務(wù)。
開發(fā)者可以開發(fā)滿足業(yè)務(wù)需求的自定義方面。
開發(fā)Spring AOP Advice 很方便,可以借助代理類快速搭建Spring AOP 應(yīng)用。