为什么pointcut.matches(String.class)返回“true”

时间:2010-12-17 05:55:58

标签: java spring aop aspectj spring-aop

我是AOP的新手,我写了一个小测试 of aspectJ AOP切入点,

public void test1() {

    AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
    pointcut.setExpression("execution(public * java.util.*.*(..))");

    System.out.println(pointcut.matches(String.class)) ;
}

我希望它会打印出“false”,因为String.class不包含在java.util包中。 但实际上它给了我“真实”, 我犯了什么错误?

版本:spring 3.0

提前致谢。

1 个答案:

答案 0 :(得分:2)

此切入点正在寻找java.util包和子包中的方法执行,其中String类中有几个。例如String.replaceFirst(String, String)的来源如下(我插入的评论):

public String replaceFirst(String regex, String replacement) {
return 
        /* java.util.regex.Pattern */ Pattern.compile(regex).matcher(this)
        /* java.util.regex.Matcher */ .replaceFirst(replacement);
}

所以比赛是正确的。