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

发布于 2024-10-07 17:24:30 字数 417 浏览 2 评论 0原文

我是 Spring AOP 的新手,我写了一个小测试 的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

提前致谢。

I am new to spring AOP and I write a small test
of aspectJ AOP pointcut,

public void test1() {

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

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

I expect it will print out "false", because String.class is not include in java.util package.
but actually it gives me the "true",
What mistake I made?

version: spring 3.0

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撩心不撩汉 2024-10-14 17:24:30

此切入点正在从 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);
}

所以匹配是正确的。

This pointcut is looking for executions of methods from the java.util package and sub-packages, of which there are several in the String class. e.g. the source of String.replaceFirst(String, String) looks as follows (comments inserted by me):

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

So the match is correct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文