81,087
社区成员
发帖
与我相关
我的任务
分享
@Aspect()
public class HelloWorldAspect {
//@Pointcut(value="execution(* com.baker.example.*(..)) && args(param)", argNames = "param")
@Pointcut(value="execution(* com.baker.example..*.*(..))")
public void beforePointcut() {}
@Before(value = "beforePointcut()")
public void beforeAdvice(JoinPoint jp) {
System.out.println("===========before advice param:" + jp.getSignature().getName());
}
}
public class HelloWorldService {
public void sayBefore(String str){
System.out.println("-----------hello world!!------------------"+str);
}
}
<bean id="helloWorldService"
class="com.baker.example.HelloWorldService"/>
<bean id="aspect" class="com.baker.example.HelloWorldAspect"/>
6-10-10 10:41:30,911][DEBUG] - Found AspectJ method: public void com.baker.example.HelloWorldAspect.beforeAdvice(org.aspectj.lang.JoinPoint)
[2016-10-10 10:41:30,957][INFO] - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@10713c7: defining beans [org.springframework.aop.config.internalAutoProxyCreator,helloWorldService,aspect]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloWorldService' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut beforePointcut
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut beforePointcut
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:317)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:189)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:176)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:157)
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:189)
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:244)
at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:278)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:83)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:66)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:296)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:313)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1181)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:66)
at com.baker.example.Test.testAnnotationBeforeAdvice(Test.java:17)
at com.baker.example.Test.main(Test.java:25)