我有以下方面。为方法添加额外的参数?
@Around("somePublicMethod()")
public Object doAction(ProceedingJoinPoint call) throws Throwable {
SomeObject client = null;
Object result = null;
try
{
client = someDao.getResult();
Object[] allArgs = call.getArgs();
allArgs[allArgs.length-1] = client;
// Do the call, passing in the managed SiperianClientWrapper
result = call.proceed(allArgs);
}
catch(Exception ex)
{
throw ex;
}
我有一个服务方法如下。该方法被上述方面拦截
public SomeEntity getEntities(String name, String pwd, SomeObject client){
//some logic
}
上述方法调用如下。
someService.getEntities("name","pwd",null);
Some方面做的是SomeObject有null,null被一些实际值替换。
我的问题是不是将null作为参数值,而是可以使用Reflection中的Aspect添加额外的参数?在我的情况下,可以动态添加SomeObject参数?
所以最后我不得不打电话给服务someService.getEntities("name","pwd");
和SomeObject将动态添加Aspect?
谢谢!
Sotirios,谢谢你的回答。我将更改getEntities方法签名以接受两个参数而不是三个参数。现在是否可以添加额外的一个方法参数或者是否有任何方法来注入SomeObject运行时? – user755806
@ user755806编译方法。在运行时你不能改变他们的签名。如果你用可变参数声明一个方法,你可以在运行时向它传递更多的参数。 –