Spring Can';找不到引用的切入点
我正在开发我的第一个方面,我遇到了以下问题 MyAspect类:Spring Can';找不到引用的切入点,spring,aspectj,spring-aop,Spring,Aspectj,Spring Aop,我正在开发我的第一个方面,我遇到了以下问题 MyAspect类: @Component @Aspect public class MyAspect{ @Pointcut("execution(* com.mypackage.MyClass.method(..))") public void sendComunication(){} @AfterReturning("sendComunication()") public void sendComunicationMail() {
@Component
@Aspect
public class MyAspect{
@Pointcut("execution(* com.mypackage.MyClass.method(..))")
public void sendComunication(){}
@AfterReturning("sendComunication()")
public void sendComunicationMail() {
//TODO somethings
}
}
然后我在applicationContext中添加了“aop:aspectj autoproxy”和aop名称空间。现在,当我尝试构建应用程序时,出现以下错误:
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
我哪里做错了?提示您需要升级到aspectj的更新版本 问题是
com.mypackage.MyClass
不是一个bean成功地启动了,而是vaadin面板中的一个方法它无法找到您提到的方面(即“execution(*com.mypackage.MyClass.method(..)”)。方法签名可能是错误的。我最近遇到了同样的问题。答案是将aspectj的版本更改为新版本。就像Sotirios Delimanolis所说的那样。您添加了组件扫描吗?我不确定这是否重要。是的,我添加了组件扫描。你能发布跟踪吗?这不会改变你得到的错误。创建时不需要应用
@Aspect
。当Spring尝试创建@Aspect
但找不到与sendCommunication()
匹配的@Pointcut
时,会发生故障。抱歉。这是我第一次发布答案。