//方法解析信息Map,保存每个方法的信息避免每一次都需要解析方法,节省时间。 privatefinal Map<Class<?>, Map<Method, RestMethodInfo>> serviceMethodInfoCache = new LinkedHashMap<Class<?>, Map<Method, RestMethodInfo>>(); //保存请求接口的url final Endpoint server; //网络数据交互Executor final Executor httpExecutor; //完成数据回调Executor final Executor callbackExecutor; //请求拦截处理 final RequestInterceptor requestInterceptor; //数据序列化和反序列化工具 final Converter converter; final Log log; final ErrorHandler errorHandler;
public <T> T create(Class<T> service){ Utils.validateServiceClass(service); return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class<?>[] { service }, new RestHandler(getMethodInfoCache(service))); }
2.2 RestHandler.java
1 2 3 4 5 6 7
//在这个方法内解析方法、根据方法走不同的请求方式。 //分为三种模式:返回值类型是自定义Bean类型;返回类型是void,需要处理回调;还有一种是RxJava(暂不了解-_-) public Object invoke(Object proxy, Method method, final Object[] args) //请求网络数据,反序列数据 private Object invokeRequest(RequestInterceptor requestInterceptor, RestMethodInfo methodInfo, Object[] args)