我有一个在spring上开发的方法。下面是我的方法:
@PreAuthorize("isAuthenticated() and hasPermission(#request, 'CREATE_REQUISITION')")
@RequestMapping(method = RequestMethod.POST, value = "/trade/createrequisition")
public @ResponseBody
void createRequisition(@RequestBody CreateRequisitionRO[] request,
@RequestHeader("validateOnly") boolean validateOnly) {
logger.debug("Starting createRequisition()...");
for (int i = 0; i < request.length; i++) {
CreateRequisitionRO requisitionRequest = request[i];
// FIXME this has to be removed/moved
requisitionRequest.setFundManager(requisitionRequest.getUserId());
// FIXME might have to search using param level as well
SystemDefault sysDefault = dbFuncs.references.systemDefault
.findByCompanyAndDivisionAndPortfolio(
userContext.getCompany(),
userContext.getDivision(),
requisitionRequest.getPortfolio());
requisitionRequest.setCustodianN(sysDefault.getCustodianN());
gateKeeper.route(requisitionRequest);
}
}
我想通过java反射调用这个方法并得到响应。并比较响应
tomcat is up用户登录系统。当tomcat启动时,我必须使用反射来调用该方法。
如何在Java反射中做到这一点?
请帮忙,如果可能的话,请给我一些建议,如果不可能,请支持我的可能性,这将有助于我解决这个问题。
编辑:
这是我尝试过的,但它不工作:
Class cls;
CreateRequisitionRO[] request = new CreateRequisitionRO[10];
try {
//load the HexgenWebAPI at runtime
cls = Class.forName("com.hexgen.api.facade.HexgenWebAPI");
Object obj = cls.newInstance();
Method method = cls.getDeclaredMethod("createRequisition", parames,booleanVal);
method.invoke(obj, request,true);
}catch(Exception ex){
ex.printStackTrace();
System.out.println("status of reflection : "+ex.getCause());
}
致以最亲切的问候把
根据对注释的响应,您正在尝试测试Spring MVC控制器。我看不出你有什么理由要下决心去反思。单元测试最好在web容器之外编写和运行。如果你想做集成测试,检查Spring-MVC-Test,或使用浏览器测试框架,如WebDriver或HtmlUnit