问题描述
据我所知,我们甚至可以为切入点定义建议。例子
package com.master_scrum.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class ConstructorAspect {
@Before("execution(com.master_scrum.Account.new(..)")
public void beforeExecuteConstructor(JoinPoint jp){
System.out.println("Do somthing good");
}
}
现在如何为该建议创建另一个建议?什么是synctax? 我已经尝试过了,但是没有用:
package com.master_scrum.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AspectOfConstructorAspect {
@Before("execution("* ConstructorAspect.*(..))") //aspects are in same package
public void beforeAspect(JoinPoint jp){
System.out.println("Before constructor advice");
}
}
谢谢
解决方法
我从AspectJ手册中找到了解决方案
像这样定义切入点
package com.master_scrum.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AspectOfConstructorAspect {
@Before("adviceexecution() && within(com.master_scrum.aop.ConstructorAspect)")
public void beforeAspect(JoinPoint jp){
System.out.println("Before constructor advice");
}
}