<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    Spring中AOP的使用

    Posted on 2009-02-16 19:49 啥都寫點 閱讀(1233) 評論(0)  編輯  收藏 所屬分類: J2EE

    AOP:面向切面編程

    代理模式講解AOP技術

       操作接口

    代理實現 à真實實現

    因為此代理類只能為一個接口的對象進行代理 à靜態代理

    能不能有一種方法可以為所有的類進行代理 à動態代理

    Spring提供的一系列Advices接口

       |- BeforeAdvice

       |- AfterAdvice

    主要操作是在配置上:applicationContext.xml 文件上

    了解其作用:只關注于業務本身,而與其他業務無關

    à尚學堂代碼實例(spring-avi-152-014):

    public class SecurityHandler implements InvacationHandler {

       private Object targetObject;

       public Object newProxy(Object targetObject) {

       this.targetObject = targetObject;

       return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),

    targetObject.getClass.getInterfaces(),

    this);

    }

    Public Object invoke(Object proxy,Method method,Object[] args)throws Throwable {

       checkSecuity();

       Object ret = null;

     Try {

       ret = method.invoke(this.targetObject , args);

    }catch(Exception e) {

       e.printStackTrace();

       throw new java.lang.RuntimeException(e);

    }

     return ret;

    }

     private void checkSecurtiy() {

       System.out.println(“------------checkSecurity()-----------”);

    }

    }

    àSpring AOP的支持(采用Annotation的方式)

    1spring依賴庫

    * SPRING_HOME/dist/spring.jar

    * SPRING_HOME/lib/Jakarta-commons/commons-logging.jar

    * SPRING_HOME/lib/log4j-1.2.14.jar

    *SPRING_HOME/lib/aspectj/*.jar

    2 采用Aspect定義切面

    1、 Aspect定義PointcutAdvice

    2、 啟用AspectJAnnotation的支持并且將Aspect類和目標對象配置到LOC容器中

    注意:在這種方法定義中,切入點的方法是不是被執行的,它存在的目的僅僅是為了重用切入點即Advice中通過方法名引用這個切入點

    AOP

    l       Cross cutting concern

    l       Aspect

    l       Advice(橫切關注點的具體實現)

    l       Pointcut(圈定了一個范圍

    l       Joinpoint spring只支持方法級的Joinpoint

    l       Weave

    l       Target Object

    l       Proxy

    l       Introduction

    à實例(spring-avi-152-016):

    /**

    *定義PointcutPointcut的名稱就是allAddMethod,此方法不能有返回值和參數,只是一個標

    *

    *

    *Pointcut的內容是一個表達式,描述哪些對象的哪些方法(訂閱Joinpoint

    */

    @Aspect

    Public class SecurityHandle {

       @Pointcut(“execution(* add*(..)) || execution(*del*(..))”)    //第一個*表示返回值,第二個表示以add開頭的所//有方法, ..表示所有參數

    Private void allAddMethod() {} //不會被調用,只是一個標識

    /**

    *定義Advice,標識在哪個切入點何處織入此方法

    *

    */

    @Before(“allAddMethod()”)

    Private void checkSecurity() {

       System.out.println(“---------------------------checkSecurity()----------------------------”);

    }

    }

    需要在applicationContext中加入:<aop:aspectj-autoproxy/> 啟用對Annotation的支持

    spring-avi-152-017

    à靜態文件配置方式

     <aop:config>

         <aop:aspect id=”” ref=””>

               <aop:pointcut id=”allAddMethod” expression=”execution(* com.bjsxt.spring.UserManager.add*(..))”/>

              <aop:before method=”” pointcut-ref=””/>

         </aop:apect>

     </aop:config>

    àspringJoinPoint只針對方法

    public class SecurityHandler {

     private void args = joinPoint.getArgs();

       Object[] args = joinPoint.getArgs(); //取得方法的參數

     For (int i=0;i<args.length;i++) {

           System.out.println(args[i]);

    }

    System.out.println(joinPoint.getSignature().getName()); //得到方法簽名

    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 嫖丰满老熟妇AAAA片免费看| 一区国严二区亚洲三区| 国产亚洲av片在线观看播放| 亚洲国产一区二区a毛片| 亚洲国产精品无码第一区二区三区 | 在线a人片天堂免费观看高清| 亚洲国产精品成人网址天堂| 亚洲午夜精品一区二区| 16女性下面无遮挡免费| 亚洲国产电影av在线网址| 日韩一区二区三区免费播放| 国产国拍精品亚洲AV片| 亚洲熟伦熟女专区hd高清| 免费毛片网站在线观看| 一区视频免费观看| 亚洲AV无码一区二区二三区入口 | 亚洲一区二区三区高清不卡| 全免费一级午夜毛片| 日本永久免费a∨在线视频| 久久亚洲国产成人影院网站| 一本天堂ⅴ无码亚洲道久久| 国产高清在线精品免费软件| 国产99久久久久久免费看| 亚洲国产女人aaa毛片在线| 免费电视剧在线观看| 亚洲卡一卡2卡三卡4卡无卡三| 18禁男女爽爽爽午夜网站免费 | 一区二区三区在线免费| 亚洲AV成人精品网站在线播放| 一级毛片在播放免费| 久久综合亚洲色HEZYO社区 | 啦啦啦中文在线观看电视剧免费版 | 久久99免费视频| 亚洲日韩国产精品乱| 黄色网址免费在线| 成在线人永久免费视频播放| 亚洲国产成人精品无码区二本 | 亚洲无码高清在线观看| 久久精品免费一区二区| 午夜在线免费视频 | 亚洲成a人片在线观看天堂无码|