2017-08-14 27 views
1

我在學習spring AOP。在嘗試一個例子時,我得到了「切入點不是良構」的例外。以下是例外情況:切入點不健全

代碼: package org.aspectDemo.aspect.com;

import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.Pointcut; 

@Aspect 
public class LogginAspect { 
    @Before("allGetters()") 
    public void LoggingAdvice(){ 
     System.out.println("Advice run. Get method called"); 
    } 
    @Pointcut("execution(* * org.aspectDemo.model.com.Circle.*())") 
    public void allGetters(){} 

} 

例外:

java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 14 
execution(* * org.aspectDemo.model.com.Circle.*()) 
      ^^^ 

    at org.aspectj.weaver.tools.PointcutParser.resolvePointcutExpression(PointcutParser.java:316) 
    at org.aspectj.weaver.reflect.InternalUseOnlyPointcutParser.resolvePointcutExpression(InternalUseOnlyPointcutParser.java:36) 
    at org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate.getDeclaredPointcuts(Java15ReflectionBasedReferenceTypeDelegate.java:309) 
    at org.aspectj.weaver.ReferenceType.getDeclaredPointcuts(ReferenceType.java:884) 
    at org.aspectj.weaver.ResolvedType$PointcutGetter.get(ResolvedType.java:243) 
    at org.aspectj.weaver.ResolvedType$PointcutGetter.get(ResolvedType.java:241) 
    at org.aspectj.weaver.Iterators$4$1.hasNext(Iterators.java:213) 
    at org.aspectj.weaver.Iterators$4.hasNext(Iterators.java:230) 
    at org.aspectj.weaver.ResolvedType.findPointcut(ResolvedType.java:743) 
    at org.aspectj.weaver.patterns.ReferencePointcut.resolveBindings(ReferencePointcut.java:148) 
    at org.aspectj.weaver.patterns.Pointcut.resolve(Pointcut.java:189) 
    at org.aspectj.weaver.tools.PointcutParser.resolvePointcutExpression(PointcutParser.java:313) 
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:294) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:212) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:199) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:188) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:168) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:208) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:262) 
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:294) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:118) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:88) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:372) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:335) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:421) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1558) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    ... 11 more 

回答

1

根據the documentation你似乎有一個星號太多。此外,「任何參數」被編碼爲(..)您的表達應該是

execution(* org.aspectDemo.model.com.Circle.*(..)) 
+0

哇謝謝!有用。 – manjosh

+1

在這種情況下,隨時也upvote我的回答:) – David