接下来就是执行器来执行指定逻辑代码了,因为Map中放的是Method,执行需要进行反射:
public class AbstractBaseServiceAdapter { /** * json ==> OpenRequest * @param json * @param handler * @return */ public final OpenRequest decode(JSON json, ServiceMethodHandler handler){ Class<? extends OpenRequest> requestClass = handler.getRequestType(); ObjectMapper mapper = new ObjectMapper(); OpenRequest request = null; try { request = mapper.readValue(json.toJSONString(), requestClass); } catch (Exception e) { throw new OpenServiceException( "open decode had a exp json==>"+json , e); } return request; } /** * OpenResponse ==> json * @param response * @return */ public final JSON encode(OpenResponse response){ ObjectMapper mapper = new ObjectMapper(); // Convert object to JSON string JSON json = null; try { String j = mapper.writeValueAsString(response); json = JSON. parseObject(j); } catch (Exception e) { throw new OpenServiceException( "open encode had a exp response==>"+response.getClass() , e); } return json; } public final JSON execute(JSON json, ServiceMethodHandler handler) { OpenRequest request = this.decode(json, handler); handler.getHandler(); handler.getHandlerMethod(); OpenResponse response = null; try { // 执行器执行对应方法 response = (OpenResponse) handler.getHandlerMethod().invoke( handler.getHandler(), request); } catch (Exception e) { throw new OpenServiceException( "open invoke had a exp json"+json , e); } JSON retrunJson = this.encode(response); return retrunJson; } }至此结构代码已经理清,具体还有method的输入输出,需要统一接口实现,以保证执行器代码的统一。
总结:
1,这个方案的核心就是利用注解来组装好这个路由Map,以及用反射的方式执行对应的方法。
2,另外Spring的确十分强大,很多封装代码可以被使用。学习java的应该深入进去挖宝。
让我们继续前行
———————————————————————-
努力不一定成功,但不努力肯定不会成功。