| 在spring2.0中,aop发生了很大的变化: 主要分为两大方面 1.支持简单的aop xml配置 2.支持@AspectJ的注释 先来看一看第一种情况: 申明一个aspect,在xml中的申明如下: <aop:config> <aop:aspect id="myAspect" ref="aBean"> ... </aop:aspect> </aop:config> <bean id="aBean" class="..."> ... </bean>
<aop:config> <aop:pointcut id="businessService" expression="execution(* com.xyz.myapp.service.*.*(..))"/> </aop:config>
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"/>
<aop:aspect id="usageTrackerAspect" ref="usageTracking"> <aop:declare-parents types-matching="com.xzy.myapp.service.*+", implement-interface="UsageTracked" <aop:before pointcut="com.xyz.myapp.SystemArchitecture.businessService() and this(usageTracked)" method="recordUsage"/> </aop:aspect>
|
本文详细介绍了 Spring 2.0 中 AOP 的 XML 配置方式,包括 aspect、pointcut、advice 的声明及使用示例,并展示了如何通过 XML 实现 before、after returning、after throwing、after finally 和 around advice 的配置。
150

被折叠的 条评论
为什么被折叠?



