2010-12-17 44 views
2

我新的Spring AOP和我寫了一個小的測試AspectJ的AOP切入點 ,爲什麼pointcut.matches(String.class)返回「真」

public void test1() { 

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

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

我希望它會打印出「假」 ,因爲String.class不包含在java.util包中。 但實際上它給了我「真實」, 我犯了什麼錯誤?

版本:spring 3.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); 
} 

所以這場比賽是正確的。