站長資訊網
        最全最豐富的資訊網站

        基于schema的風格AOP

        基于schema的風格
        先看一下配置文件(aop_config_schema.xml):

        <?xml version=”1.0″ encoding=”UTF-8″?> 
        <beans xmlns=”http://www.springframework.org/schema/beans” 
                   xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” 
          xmlns:aop=”http://www.springframework.org/schema/aop”  
                xsi:schemaLocation=” 
        [url]http://www.springframework.org/schema/beans[/url]
        [url]http://www.springframework.org/schema/beans/spring-beans-2.0.xsd[/url] 
        [url]http://www.springframework.org/schema/aop[/url] 
        [url]http://www.springframework.org/schema/aop/spring-aop-2.0.xsd[/url]> 
        <!– 
        有了schema的支持,切面就和常規的Java對象一樣被定義成application context中的一個bean。 
        對象的字段和方法提供了狀態和行為信息,XML文件則提供了切入點和通知信息。 
        正如下面這個bean指向一個沒有使用 @Aspect 注解的bean類, 
        但是這個類會在下面被配置為一個切面的backing bean(支持bean)。 
        –> 
        <bean id=”aBean” class=”com.xyz.myapp.AspectExample2″> 
          … 
        </bean> 
        <!– 
        配置文件中: 
        所有的AOP配置是在<aop:config>標簽中設置的,所有的切面和通知器都必須定義在 <aop:config> 元素內部。 
        一個application context可以包含多個 <aop:config>。 
        一個 <aop:config> 可以包含pointcutadvisoraspect元素(注意它們必須按照這樣的順序進行聲明)。 
        如果想強制使用CGLIB代理,需要將 <aop:config> 的 proxy-target-class 屬性設為true 
        –> 
        <aop:config> 
          <!–頂級(<aop:config>)切入點: 
          直接在<aop:config>下定義,這樣就可以使多個切面和通知器共享該切入點。–> 
          <aop:pointcut id=”businessService” 
          expression=”execution(* com.xyz.myapp.service.*.*(..))”/> 
          <!–這里使用命名式切入點,只在JDK1.5及以上版本中支持。–> 
          <aop:pointcut id=”businessService” 
          expression=”com.xyz.myapp.SystemArchitecture.businessService()”/> 

          <!–切面使用<aop:aspect>來聲明,backing bean(支持bean)通過 ref 屬性來引用–> 
          <aop:aspect id=”myAspect” ref=”aBean”> 
            <!–在切面里面聲明一個切入點:這種情況下切入點只在切面內部可見。–> 
            <aop:pointcut id=”businessService” 
            expression=”execution(* com.xyz.myapp.service.*.*(..))”/> 

            <!–Before通知–> 
            <aop:before 
           pointcut-ref=”dataAccessOperation” 
           method=”doAccessCheck”/> 
            <!–使用內置切入點:將 pointcut-ref 屬性替換為 pointcut 屬性–> 
            <aop:before 
           pointcut=”execution(* com.xyz.myapp.dao.*.*(..))” 
           method=”doAccessCheck”/> 

            <!–返回后通知–> 
            <aop:after-returning 
           pointcut-ref=”dataAccessOperation” 
           method=”doAccessCheck”/> 
            <!–@AspectJ風格一樣,通知主體可以接收返回值。使用returning屬性來指定接收返回值的參數名–> 
            <aop:after-returning 
           pointcut-ref=”dataAccessOperation” 
           returning=”retVal” 
           method=”doAccessCheck”/> 

            <!–拋出異常后通知–> 
            <aop:after-throwing 
           pointcut-ref=”dataAccessOperation” 
           method=”doRecoveryActions”/> 
            <!–@AspectJ風格一樣,可以從通知體中獲取拋出的異常。 
            使用throwing屬性來指定異常的名稱,用這個名稱來獲取異常–> 
            <aop:after-throwing 
           pointcut-ref=”dataAccessOperation” 
           thowing=”dataAccessEx” 
           method=”doRecoveryActions”/> 

            <!–后通知–> 
            <aop:after 
           pointcut-ref=”dataAccessOperation” 
           method=”doReleaseLock”/> 

            <!–Around通知:通知方法的第一個參數的類型必須是 ProceedingJoinPoint 類型–> 
            <aop:around 
           pointcut-ref=”businessService” 
           method=”doBasicProfiling”/> 
          </aop:aspect> 
        </aop:config> 
        </beans>

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品一香蕉国产线看观看| 国产精品自在线拍国产电影| 四虎国产精品永久地址49| 亚洲无码日韩精品第一页| 91麻豆精品国产91久久久久久 | 亚洲国产成人精品无码区在线观看 | 国产精品久久久久影院色| 中文字幕久久精品| 国产啪亚洲国产精品无码 | 色花堂国产精品第一页| 99香蕉国产精品偷在线观看| 色欲精品国产一区二区三区AV| 午夜一级日韩精品制服诱惑我们这边| 国产精品 羞羞答答在线| 精品综合久久久久久97超人| 18国产精品白浆在线观看免费| 无码国产精品一区二区免费16| 亚洲精品无码你懂的网站| 久久99精品久久久久久水蜜桃 | 99精品久久久久久久婷婷| 精品国产亚洲一区二区三区| 98视频精品全部国产| 久久精品麻豆日日躁夜夜躁| 无码精品久久久久久人妻中字 | 久久青青草原精品影院| 国产精品合集一区二区三区 | 精品一区二区三区中文字幕| 国产精品久久久久久久久| 国产成人精品免费午夜app| 国产精品美脚玉足脚交欧美| 在线精品无码字幕无码AV| 欧美午夜精品一区二区三区91| 日韩三级精品| 久久99热精品| 久久精品男人影院| 欧美精品在线一区二区三区| 久久99国产精品久久99| 精品午夜久久福利大片| 国内精品免费在线观看| 色综合久久精品中文字幕首页 | 国产亚洲精品岁国产微拍精品|