2013-10-28 21 views
4

我正在開發我的第一個方面,並遇到以下問題。找不到引用切入點

MyAspect類:

@Component 
@Aspect 
public class MyAspect{ 


@Pointcut("execution(* com.mypackage.MyClass.method(..))") 
public void sendComunication(){} 

@AfterReturning("sendComunication()") 
public void sendComunicationMail() { 

    //TODO somethings 
} 

}

然後我說 「AOP:AspectJ的自動代理」 和AOP命名空間中的applicationContext。現在,當我嘗試構建我的應用程序時,出現此錯誤:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut sendComunication 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323) 
    ... 36 more 
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut sendComunication 
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:315) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:207) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:193) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:182) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:163) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:210) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:264) 
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:296) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 42 more 

我在哪裏做錯了?

+0

您是否添加了組件掃描?不過,我不確定這是否重要。 – Atul

+0

是的,我添加組件掃描 – Skizzo

+0

你可以發佈跟蹤? – Atul

回答

-1

的問題是,

com.mypackage.MyClass

不是一個bean管理到春天,而是它在vaadin面板

+0

這不會改變你得到的錯誤。 '@Aspect'不需要被創建。 Spring在嘗試創建'@Aspect'時失敗,但找不到與'sendCommunication()'匹配的@ Pointcut'。 –

0

這是無法找到任何你所提到的方面(我的方法e「執行(* com.mypackage.MyClass.method(..))」)。方法簽名可能是錯誤的。

0

我最近遇到了同樣的問題。答案是將我們的aspectj版本更改爲新版本。就像Sotirios Delimanolis說。

+0

對不起。這是我第一次發佈答案。 – philee

相關問題