閑人野居
          好好學習,天天向上
          posts - 57,  comments - 137,  trackbacks - 0
          在spring2.0中,aop發(fā)生了很大的變化:
          主要分為兩大方面
          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>

          或者帶有返回參數(shù)

          <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 布衣郎 閱讀(1995) 評論(0)  編輯  收藏 所屬分類: aopspring

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(12)

          隨筆分類(59)

          隨筆檔案(57)

          blog

          java

          uml

          搜索

          •  

          積分與排名

          • 積分 - 358034
          • 排名 - 156

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 铜山县| 三亚市| 洞口县| 禄丰县| 迭部县| 贵德县| 贺州市| 伊通| 色达县| 黄山市| 张家界市| 滦平县| 灌云县| 林西县| 新丰县| 师宗县| 云林县| 舞阳县| 镇巴县| 蒙自县| 增城市| 普兰店市| 菏泽市| 原阳县| 翼城县| 伊吾县| 沅江市| 五台县| 江永县| 鞍山市| 巴中市| 苏州市| 永顺县| 西青区| 上犹县| 麻栗坡县| 馆陶县| 盘锦市| 玉山县| 商丘市| 洛宁县|