AspectJ的注釋
先來看一看第一種情況:
申明一個aspect,在xml中的申明如下:
<aop:config>
? <aop:aspect id="myAspect" ref="aBean">
??? ...
? </aop:aspect>
</aop:config>
<bean id="aBean" class="...">
? ...
</bean>
申明pointcut
<aop:config>
? <aop:pointcut id="businessService"
??????? expression="execution(* com.xyz.myapp.service.*.*(..))"/>
</aop:config>
申明advice
Before advice:
<aop:aspect id="beforeExample" ref="aBean">
??? <aop:before
????? pointcut-ref="dataAccessOperation"
????? method="doAccessCheck"/>
</aop:aspect>
After returning advice:
<aop:aspect id="afterReturningExample" ref="aBean">
?
??? <aop:after-returning
????? pointcut-ref="dataAccessOperation"
????? method="doAccessCheck"/>
?????????
??? ...
???
</aop:aspect>
或者帶有返回參數
<aop:aspect id="afterReturningExample" ref="aBean">
?
??? <aop:after-returning
????? pointcut-ref="dataAccessOperation"
???? ?returning="retVal"
????? method="doAccessCheck"/>
?????????
??? ...
???
</aop:aspect>
?
After throwing advice:
<aop:aspect id="afterThrowingExample" ref="aBean">
?
??? <aop:after-throwing
????? pointcut-ref="dataAccessOperation"
????? method="doRecoveryActions"/>
?????????
??? ...
???
</aop:aspect>
或者帶有throwing
<aop:aspect id="afterThrowingExample" ref="aBean">
?
??? <aop:after-throwing
????? pointcut-ref="dataAccessOperation"
????? throwing="dataAccessEx"
????? method="doRecoveryActions"/>
?????????
??? ...
???
</aop:aspect>
After (finally) advice:
<aop:aspect id="afterFinallyExample" ref="aBean">
?
??? <aop:after
????? pointcut-ref="dataAccessOperation"
????? method="doReleaseLock"/>
?????????
??? ...
???
</aop:aspect>
Around advice:
<aop:aspect id="aroundExample" ref="aBean">
?
??? <aop:around
????? pointcut-ref="businessService"
????? method="doBasicProfiling"/>
?????????
??? ...
???
</aop:aspect>
Advice parameters:
<aop:before
? pointcut="Pointcuts.anyPublicMethod() and @annotation(auditable)"
? method="audit"
??arg-names="auditable"/>
對于引入接口(Introductions):
<aop:aspect id="usageTrackerAspect" ref="usageTracking">
? <aop:declare-parents
????? types-matching="com.xzy.myapp.service.*+",
????? implement-interface="UsageTracked"
????? default-impl=" service.tracking.DefaultUsageTracked"/>
? <aop:before
??? pointcut="com.xyz.myapp.SystemArchitecture.businessService()
????????????? and this(usageTracked)"
??? method="recordUsage"/>
</aop:aspect>
posted on 2006-09-15 09:41
布衣郎 閱讀(1985)
評論(0) 編輯 收藏 所屬分類:
aop 、
spring