Java AOP AspectJ切入点if()引发ArrayIndexOutOfBoundsException:

Java AOP AspectJ切入点if()引发ArrayIndexOutOfBoundsException:,java,spring-boot,aop,aspectj,pointcut,Java,Spring Boot,Aop,Aspectj,Pointcut,我正在尝试编写一个方面,尝试实现切入点的if()条件,但收到ArrayIndexOutOfBoundsException。下面是代码片段 @Pointcut("call(* com.aop.Service.activate(..)) && args(iActivate,..) && if()") public static boolean saveActivate(Activate iActivate) { return

我正在尝试编写一个方面,尝试实现切入点的if()条件,但收到ArrayIndexOutOfBoundsException。下面是代码片段

@Pointcut("call(* com.aop.Service.activate(..)) && args(iActivate,..) && if()")
    public static boolean saveActivate(Activate iActivate) {
        return true; //if false @before she not be invoked
    };

@Before("saveActivate(iActivate)")
    public void saveActivateBefore(JoinPoint ijoinPoint, ActivateInstallmentRequest iActivateInstallmentRequest) {
        System.out.println("Log from @before");    
}
此代码给了我以下例外情况:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectMapperConfigurer' defined in class path resource [springfox/documentation/spring/web/SpringfoxWebMvcConfiguration.class]: Initialization of bean failed; nested exception is java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
有人能帮我找到我缺少的东西吗?
PS:我也提到过。

在验证您使用Spring AOP之后,答案确实是
if()
call()
都不受支持,另请参阅Spring手册中关于的部分

如果要使用这些指示符,需要激活

SpringAOP的一个解决方法是在advice方法的开头使用一个常规的
if
,如果没有使用
call()
的具体原因,则使用
execution()
,这正是大多数人想要的。这里我不打算详细说明调用连接点和执行连接点之间的区别,但您可以咨询更多信息



更新:在您的代码片段中还有其他一些东西看起来有点奇怪,但我所解释的是目前最大的问题。

在继续之前,我想再次检查:您是否100%确定您使用的是AspectJ而不仅仅是Spring AOP?您是否明确地将Spring配置为使用加载时编织?另一个问题是,您的目标类名是否真的是带有小写“s”的
com.aop.service
。通常Java类名以大写字母开头。@kriegaex-我在项目中使用SpringAOP。基于yu的评论,我假设只针对AspectJ而不是SpringAOP中的切入点的条件if?“com.aop.service”是我在代码中给出的任意名称,不必担心!