::0 切入点中正式未绑定错误

问题描述 投票:0回答:4

项目中的所有类都在 com.aspect 包中。

主要看点:

@Aspect
public class MainAspect {

    @Pointcut("within(com.aspect..*)")
    public void standaloneLayer(){}

}

以帐户对象作为参数的连接点的另一个方面:

 @Aspect
    public class AccountAspect {

        @After("com.aspect.MainAspect.standaloneLayer() && args(account)")
        public void pointCutForAccount(JoinPoint joinPoint, Account account){

        }
    }

服务层类:

@Service
public class Customer {
    public void setAccountBalance(Account account) {}
}

运行应用程序时,我遇到以下异常:

原因:

java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
  at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:317)
java spring-aop
4个回答
4
投票

就我而言,原因是我导入了错误的类。确保您导入的类是

org.aspectj.lang.JoinPoint
而不是其他任何东西。


3
投票

再次交叉检查您的代码是否导入了 org.aopalliance.intercept.Joinpoint 而不是 org.aspectj.lang.JoinPoint 注意,对于 AspectJ AOP,您需要导入 org.aspectj.lang.JoinPoint。


0
投票
import org.aopalliance.intercept.Joinpoint;
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 LoggingAspect {
@Before("allCircleMethods()")
    public void LogginAdvice(JoinPoint joinpoint)
    {
    System.out.println("advice is run");
    System.out.println(joinpoint.toString());
    }


@Before("args(String)")
public void StringArguementMethods()
{
    System.out.println("A method that takes String arguement has been called");
}


@Pointcut("execution(* get*())")
public void allgetters()
{}

@Pointcut("within(as.model.Circle)")
public void allCircleMethods()
{}

}

当我导入 import org.aopalliance.intercept.Joinpoint;我在切入点错误中得到 0 ubound,因此我将导入更改为 org.aspect.lang.JoinPoint 并且我的程序成功运行


0
投票

您导入了错误的类。 在编写连接点时,请确保按如下方式编写。 JoinPoint- 为什么,如果您的 IDE 使用自动预测,它将导入以下内容 导入org.aspectj.lang.JoinPoint;

© www.soinside.com 2019 - 2024. All rights reserved.