spring 2.0 aop编程(一)

    技术2022-05-11  32

    在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> 申明 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" /> 对于引入接口( <aop:aspect id="usageTrackerAspect" ref="usageTracking">  <aop:declare-parents       types-matching="com.xzy.myapp.service.*+",       implement-inter      default-impl=" service.tracking.DefaultUsageTracked"/>  <aop:before     pointcut="com.xyz.myapp.SystemArchitecture.businessService()               and this(usageTracked)"     method="recordUsage"/> </aop:aspect>

     

    www.javabc.com

      Introductions):

    最新回复(0)