2019独角兽企业重金招聘Python工程师标准>>>
@Component @Slf4j public class GreetingsListener { @StreamListener(GreetingsStreams.INPUT) public void handleGreetings(String params) throws Exception{ log.info("kafka方法调用: {}", params); if (params != null) { //获取上下文对象 ApplicationContext applicationContext = SpringContextUtiles.getApplicationContext(); Map<String, Object> map = (Map) JSON.parse(params); String className = map.get("class").toString(); //获取bean对象 Object argObject = applicationContext.getBean(className); //获取对象的class Class<?> c = Class.forName(className); //获取方法 String method = map.get("method").toString(); //获取参数和参数类型 List<Map<String,Object>> paramsList = (List<Map<String,Object>>) map.get("params"); //判断是否有参数 if(paramsList==null || paramsList.size()<=0){ ReflectionUtils.findMethod(c, method).invoke(argObject); }else{ //参数 Object argsParam[]=new Object[paramsList.size()]; //参数类型 Class[] argsClass = new Class[paramsList.size()]; for (int i=0;i<paramsList.size();i++){ argsClass[i] = Class.forName(paramsList.get(i).get("type").toString()).getClass(); argsParam[i] = paramsList.get(i).get("param"); } ReflectionUtils.findMethod(c, method, argsClass).invoke(argObject,argsParam); } log.info("success: {}", params); } } }