(殘夢追月原創,轉載請注明)
本文地址:http://www.aygfsteel.com/cmzy/archive/2008/08/23/223870.html
下篇地址:Spring中基于aop命名空間的AOP 二(聲明一個切面、切入點和通知)
??? 在某些時候,我們工程中使用的JDK 不一定就是1.5 以上,也就是說可能不支持Annotation 注解,這時自然也就不能使用@AspectJ 注解驅動的AOP 了,那么如果我們仍然想使用AspectJ 靈活的切入點表達式,那么該如何呢?Spring 為我們提供了基于xml schematic 的aop 命名空間,它的使用方式和@AspectJ 注解類似,不同的是配置信息從注解中轉移到了Spring 配置文件中。在這里,我們將詳細介紹如何使用Spring 提供的<aop:config/> 標簽來配置Spring AOP 。
1 、一點準備工作和一個例子
??? 使用<aop:config/> 標簽,需要給Spring 配置文件中引入基于xml schema 的Spring AOP 命名空間。完成后的Spring 配置文件如下(在該節,所有例程的配置文件中添加了Spring AOP 命名空間,除非特殊情況外,為了節約空間,這部分將在給出的代碼中省略),粗體內容即為我們需要添加的內容:
??? 關于aop命名空間的標簽,我們前面使用過的有<aop:aspectj-autoproxy/>,在這一節,我們將以<aop:config/>標簽作為重點。事實上,我們在這一節介紹的所有標簽都是該標簽的子標簽。
?? 下面有一個例程來直觀的展示如何使用<aop:config/>標簽來配置Spring AOP(完整代碼見例程4.15)。在例子中,我們使用<aop:config/>配置一個切面并攔截目標對象Peoples的SayHello()方法,在它執行前輸出提示信息。
首先創建工程AOP_Test4.15,添加Spring IoC和Spring AOP庫后,創建aop.test包,新建目標類People,代碼如下:
??? 修改Spring xml配置文件,將該類注冊為一個受管Bean:
??? 創建含有main()方法的測試類TestMain,從Spring IoC容器中獲取Peoples對象,并調用其SayHello()方法,代碼如下:
?? 創建MyAspect類,添加一個beforeAdvice()方法作為前置通知方法,代碼如下:
??? 修改xml配置文件,為其添加aop命名空間,并把MyAspect注冊為一個受管Bean,作為我們下面定義切面的backing bean。代碼如下:
??? 運行主類,輸出如下:
例程4.15輸出結果
By:殘夢追月