《spring 2.0 技术手册》的一处疑问

看到第131页时发现,文中说“ComposablePointcut”中没有方法可以处理两个pointcut交集的方法,要是用PointCuts的union方法替”,其实并不一定需要使用PointCuts,可以用如下的 
          // FooMethodMatcher和BarMethodMatcher两个切入点的并集    
         ComposablePointcut pc = new  ComposablePointcut(ClassFilter.TRUE, new  FooMethodMatcher());
         pc.union(
new  BarMethodMatcher());
         Advice advice
= new  SimpleAdvise();
         Advisor advisor
= new  DefaultPointcutAdvisor(pc,advice);
         
         
// FooMethodMatcher和BarMethodMatcher两个切入点的交集
         ComposablePointcut pc1 = new  ComposablePointcut(ClassFilter.TRUE, new  FooMethodMatcher());
         pc1.intersection(
new  BarMethodMatcher());
         Advice advice1
= new  SimpleAdvise();
         Advisor advisor1
= new  DefaultPointcutAdvisor(pc1,advice1);

 

 

  // 自定义MethodMather类,匹配所有foo开头的方法
     private    static   class  FooMethodMatcher  extends  StaticMethodMatcher {
        
public boolean matches(Method method,Class cls){
            
return (method.getName().startsWith("foo"));
        }

        
    }

//     自定义MethodMather类,匹配所有bar开头的方法
     private    static   class  BarMethodMatcher  extends  StaticMethodMatcher {
        
public boolean matches(Method method,Class cls){
            
return (method.getName().equals("bar"));
        }

        
    }

你可能感兴趣的:(spring,Class)