Почему pointcut.matches (String.class) возвращает "true" - PullRequest
2 голосов
/ 17 декабря 2010

Я новичок в весеннем АОП и пишу небольшой тест aspectJ AOP pointcut,

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 но на самом деле это дает мне «правду», Какую ошибку я совершил?

версия: пружина 3.0

Заранее спасибо.

1 Ответ

2 голосов
/ 17 декабря 2010

Этот pointcut ищет выполнения методов из пакета 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);
}

Так что совпадение правильное.

...