Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7582079 建立时间:2006年5月29日 |

| |
[Spring]spring 2.0 aop编程(一) 软件技术
lhwork 发表于 2006/9/15 10:32:33 |
在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>申明pointcut<aop:config> <aop:pointcut id="businessService" expression="execution(* com.xyz.myapp.service.*.*(..))"/></aop:config>申明adviceBefore 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> |
|
|