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

Spring的切入點(一 靜態Pointcut)

2013-11-23 20:22:45  來源: Java開源技術 

  Pointcut即切入點用於配置切面的切入位置由於Spring中切入點的粒度是方法級因此在Spring AOP中Pointcut的作用是配置哪些類中哪些方法在我們定義的且入點之內哪些方法應該被過濾排除Spring的Pointcut分為靜態Pointcut動態Pointcut和用戶自定義Pointcut三種其中靜態Pointcut只是需要考慮類名方法名動態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;
 
 }
 

  其中matches方法用於類的匹配參數clazz是需要匹配的目標類匹配成功則返回true

    JdkRegexpMethodPointcut使用JDK中定義的正則表達式對方法名進行匹配的靜態Pointcut范例如下




      <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結尾的方法都匹配

  在該例中patterns屬性是一個javalangSring[]類型的數組表示數組中所有和定義的正則表達式匹配的方法都包含在定義的切入點內excludedPatterns則相反表示被排除於切入點范圍的方法同時和NameMatchMethodPointcut一樣它也可以用ClassFilter類型的classFilter屬性來定義類過濾器

    StaticMethodMatcherPointcut一個抽象的靜態Pointcut它不能被實例化開發者可以自己擴展該類來實現自定義的切入點


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28395.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.