[英]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.