繁体   English   中英

使用AspectJ设置带注释的方法参数的值

[英]Using AspectJ to set the value of an annotated method parameter

我想办法

public void fooMethod(Object param1, @SetupParam Object param2){
    // ... do stuff
}

我想调用而无需设置param2

fooMethod("param1");

但是在建议中神奇地设置它。 我目前正在使用此代码(简体)

@Around("@annotation(com.example.SetupParam)")
public Object setupParam(ProceedingJoinPoint pjp) throws Throwable {
    Object[] args = pjp.getArgs();
    args[1] = "setup";
    return pjp.proceed(args);
}

但是我每次都要用

fooMethod("param1", null);

所以我想摆脱null参数。 我没有使用@Autowiring,因为方法内的第二个参数始终使用不同的值实例化。

我认为您的切入点定义是错误的。 您需要的是@args定义,其中带有注释。 这与参数用定义的注释(如您所描述的注释)注释的方法匹配,您的建议应类似于(未经测试)

@Around("@args(.., com.example.SetupParam))")

请注意, ..表示任何类型的任意数量的参数。

不幸的是, @args支持一个..通配符 ,因此只要您决定在参数列表的开始或末尾使用这些带注释的参数,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM