我有以下方面。爲方法添加額外的參數?
@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編譯方法。在運行時你不能改變他們的簽名。如果你用可變參數聲明一個方法,你可以在運行時向它傳遞更多的參數。 –