1. 程式人生 > 其它 >Spring AOP Xml配置過程及解釋

Spring AOP Xml配置過程及解釋

目錄

Spring AOP(基於xml)

目前主流的AOP框架有兩個,分別是Spring AOP和AspectJ。新版本的Spring框架建議使用AspectJ來開發AOP。

專業術語:

  • Aspect(切面):在實際應用中,切面通常是指封裝用於橫向插入系統功能的類,該類要被Spring容器識別為切面,需要在配置檔案中通過<bean>元素指定。

  • JoinPoint(連線點):在程式執行過程中的某個階段點,它實際上是物件的一個操作,例如方法的呼叫或異常的丟擲。在SpringAOP中,連線點就是指方法的呼叫。

  • PointCut(切入點):是指切面與程式流程的交叉點,即那些需要處理的連線點。通常在程式中,切入點指的是類或者方法名,如某個通知要應用到所有以add開頭的方法中,那麼所有滿足這個規則的方法都是切入點。

  • Advice(通知增強處理):AOP框架在特定的切入點執行增強處理,即在定義好的切入點初所要執行的程式碼。可以理解為切面類中的方法,他是切面類的具體實現。

  • Target Object(目標物件):是指所有被通知的物件,也稱為被增強物件。如果AOP框架採用的是動態AOP實現,那麼該物件就是一個被代理的物件。

  • Proxy(代理):將通知應用到目標物件上,被動態建立的物件。

  • Weaving(織入):將切面程式碼插入目標物件上,從而生成代理物件的過程。

基於xml的宣告式AspectJ

所有的切面、切入點和通知都必須定義在<aop:config>元素內。Spring配置檔案中的<beans>元素下可以包含多個<aop:config>元素,一個<aop:config>元素中又可以包含屬性和子元素,其子元素包括<aop:pointcut>、<aop:advisor>、<aop:aspect>。在配置時,這三個子元素必須按照此順序來定義。在<aop:aspect>元素下,同樣包含屬性和多個子元素,通常使用<aop:aspect>元素及其子元素就可以在XML檔案中配置切面、切入點和通知。


  • 配置切面:在Spring的配置檔案中,配置切面使用的是<aop:aspect>元素,該元素會將一個一定一號的Spring Bean轉換為切面Bean,所以在配置檔案中要先定義一個普通的Spring Bean(如上述程式碼中的myAspect)。定義完成之後,通過<aop:aspect>元素的ref屬性即可引用該Bean。
屬性名稱 描述
id 用於定義該切面的唯一標識名稱
ref 用於引用普通的Spring Bean

  • 配置切入點:在Spring的配置檔案中,切入點是通過<aop:pointcut>元素來定義的。當<aop:pointcut>元素作為<aop:config>元素的子元素定義時,表示其為全域性切點,可以被多個切面共享;當<aop:pointcut>元素作為<aop:aspect元素的子元素時,表示該切入點只對當前切面有效。>
屬性名稱 描述
id 用於定義該切入點的唯一標識名稱
expression 用於指定切入點關聯的切入點表示式

在上述配置程式碼片段中,execution(* com.ssm.aspectj.*.*(..))就是定義切入點表示式。總的意思是匹配com.ssm.aspect保重任意類的任意方法的執行。其中execution是表示式的主體,第一個*是指返回值型別,第二個*是指類名,第三了*是指方法名,都表示任意的 。括號裡的..表示任意引數。第一個*與包名之間有空格。

具體實踐