专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » pointcut:Spring的切入点(一 静态Pointcut) »正文

pointcut:Spring的切入点(一 静态Pointcut)

来源: 发布时间:星期四, 2009年1月8日 浏览:15次 评论:0
  本文地址:http://www.blogjava.net/cmzy/archive/2008/08/09/220910.html)

  Pocut即切入点用于配置切面切入位置由于Spring中切入点粒度是思路方法级因此在Spring AOP中Pocut作用是配置哪些类中哪些思路方法在我们定义且入点的内、哪些思路方法应该被过滤排除SpringPocut分为静态Pocut、动态Pocut和用户自定义Pocut 3种其中静态Pocut只是需要考虑类名、思路方法名;动态Pocut除此的外还要考虑思路方法参数以便在运行时可以动态确定切入点位置

  1、 静态Pocut

  静态即意味着不变例如思路方法和类名称因此我们可以根据类和思路方法签名来判定那些类哪些思路方法在我们定义切入点的内、哪些应该被过滤排除

  Spring中定义中如下几个静态Pocut实现类介绍如下:

  1、 NameMatchMethodPocut:只能对思路方法名进行判别静态Pocut实现类

   使用范例如下:

  代码 

<bean id="NameMatchMethodPocut" ="org.springframework.aop.support.NameMatchMethodPocut"> 
   <property name="mappedNames"> 
     <list> 
       <value>pos*</value> 
       <value>start</value> 
     </list> 
  </property> 
</bean> 


   注意:post*表示包含所有以pos开始思路方法(大小写敏感)

   此外NameMatchMethodPocut还暴露了ClassFilter类型Filter属性可以用于指定ClassFilter接口实现类来设置类过滤器ClassFilter接口定义如下:

  代码 

package org.springframework.aop; 
 
public erface ClassFilter { 
 
  boolean matches(Class clazz); 
  ClassFilter TRUE = TrueClassFilter.INSTANCE; 
} 
package org.springframework.aop;


   其中matches思路方法用于类匹配参数clazz是需要匹配目标类匹配成功则返回true

  2、 JdkRegexpMethodPocut:使用JDK中定义正则表达式对思路方法名进行匹配静态Pocut范例如下:

  代码 

<bean id="JdkRegexpMethodPocut"  ="org.springframework.aop.support.JdkRegexpMethodPocut"> 
    <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属性是个java.lang.Sring类型表示中所有和定义正则表达式匹配思路方法都包含在定义切入点内excludedPatterns则相反表示被排除于切入点范围思路方法同时和NameMatchMethodPocut它也可以用ClassFilter类型Filter属性来定义类过滤器

  3、 StaticMethodMatcherPocut:个抽象静态Pocut它不能被例子化开发者可以自己扩展该类来实现自定义切入点

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: