<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()); //得到方法簽名

    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 一个人免费观看日本www视频| 日韩久久无码免费毛片软件| 亚洲中文无码mv| 国产精品1024在线永久免费| 无码一区二区三区AV免费| 国产亚洲精品免费视频播放| 亚洲精品456人成在线| 国产在线一区二区综合免费视频| 成人永久免费高清| 亚洲另类古典武侠| 国产一级淫片a免费播放口| 亚洲综合精品香蕉久久网| 日韩亚洲人成网站| 成人免费无码视频在线网站| 亚洲成人在线电影| 久久久精品视频免费观看| 免费va在线观看| 亚洲日本va一区二区三区 | 亚洲精品动漫在线| sss日本免费完整版在线观看| 国产亚洲精品a在线观看| 国产精品免费一区二区三区四区| AV在线播放日韩亚洲欧| 色偷偷亚洲男人天堂| 亚洲一级特黄大片在线观看 | 在线观看日本亚洲一区| 免费观看四虎精品国产永久| 亚洲人成77777在线观看网| 国产精品久久香蕉免费播放| 亚洲另类无码一区二区三区| 亚洲精品国产成人影院| 特级毛片在线大全免费播放| 免费人成年轻人电影| 中文字幕免费在线看电影大全| 亚洲精品国产精品乱码不卡| 男女作爱在线播放免费网站| 亚洲国产欧美日韩精品一区二区三区 | 国产精品亚洲一区二区在线观看 | 最近最新高清免费中文字幕| 国产精品亚洲高清一区二区| 三年片在线观看免费大全电影 |