@Autowired private ApplicationContext applicationContext;
String className = map.get("className").toString(); Object bean = applicationContext.getBean(className); Class<?> aClass = bean.getClass(); String methodName = map.get("methodName").toString(); List<String> list = (List) map.get("argsTypes"); List<Class> arrayList = new ArrayList<>(); Optional.ofNullable(list).orElse(new ArrayList()).forEach(l->{ try{ Class<?> forName = Class.forName(l.toString()); arrayList.add(forName); }catch (Exception e){} }); Class [] argsTypes = arrayList.toArray(new Class[]{}); List args = (List) map.get("args"); Method method = aClass.getMethod(methodName, argsTypes); Object[] objects = args.toArray(new Object[]{}); Object invoke = method.invoke(bean,objects ); return (R)invoke;
调用参数案例
{ "className":"QRCodeServiceImpl", "methodName":"getCabinetList", "argsTypes":["java.lang.String"], "args":["2608"] }