微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为建议执行连接点定义切入点?

如何解决如何为建议执行连接点定义切入点?

据我所知,我们甚至可以为切入点定义建议。例子

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");
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。