熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Spring的靜態Pointcut切入點

2022-06-13   來源: Java核心技術 
    Spring的Pointcut分為靜態Pointcut動態Pointcut和用戶自定義Pointcut三種其中靜態Pointcut只是需要考慮類名方法名動態Pointcut除此之外還要考慮方法的參數以便在運行時可以動態的確定切入點的位置
   
    Spring中切入點的粒度是方法級因此在Spring AOP中Pointcut的作用是配置哪些類中哪些方法在我們定義的且入點之內哪些方法應該被過濾排除
   
    靜態Pointcut
   
    靜態即意味著不變例如方法和類的名稱因此我們可以根據類和方法的簽名來判定那些類的哪些方法在我們定義的切入點之內哪些應該被過濾排除
   
    Spring中定義中如下幾個靜態Pointcut的實現類介紹如下
   
    NameMatchMethodPointcut:只能對方法名進行判別的靜態Pointcut實現類
   
    代碼示例
   
    <bean id=NameMatchMethodPointcut class=orgspringframeworkaopsupportNameMatchMethodPointcut>
   
    <property name=mappedNames>
   
    <list>
   
    <value>pos*</value>
   
    <value>start</value>
   
    </list>
   
    </property>
   
    </bean>
   
    注意post*表示包含所有以pos開始的方法
   
    此外NameMatchMethodPointcut還暴露了ClassFilter類型的classFilter屬性可以用於指定ClassFilter接口的實現類來設置類過濾器ClassFilter接口的定義如下
   
    代碼示例
   
    package orgspringframeworkaop;
   
    public interface ClassFilter {
   
    boolean matches(Class clazz)
   
    ClassFilter TRUE = TrueClassFilterINSTANCE;
   
    }
   
    package orgspringframeworkaop;
   
    其中matches方法用於類的匹配參數clazz是需要匹配的目標類匹配成功則返回true
   
    使用JDK中定義的正則表達式對方法名進行匹配的靜態PointcutJdkRegexpMethodPointcut
   
    代碼示例
   
    <bean id=JdkRegexpMethodPointcut  class=orgspringframeworkaopsupportJdkRegexpMethodPointcut>
   
    <property name=patterns>
   
    <list>
   
    <value>*ost</value>
   
    <value>*tart</value>
   
    </list>
   
    </property>
   
    <property name=excludedPatterns>
   
    <list>
   
    <value>*tart</value>
   
    </list>
   
    </property>
   
    </bean>
   
    注意*ost正則表達式所有以ost結尾的方法都匹配
   
    抽象的靜態PointcutStaticMethodMatcherPointcut它不能被實例化開發者可以自己擴展該類來實現自定義的切入點


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26880.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.