@RestController public class CustomController implements ApplicationContextAware { private ApplicationContext applicationContext; @RequestMapping({"/*Service*/*", "/*Server*/*"}) public Object needAuthService(@RequestBody(required = false) Map<String, Object> param) { HttpServletRequest request = RequestContextUtils.getRequest(); try { if (param == null) { param = new HashMap<>(); } String requestURI = request.getRequestURI(); String[] split = requestURI.split("/"); String serviceName = split[split.length - 2]; String methodName = split[split.length - 1]; Object serviceBean = null; try { serviceBean = applicationContext.getBean(serviceName.substring(0, 1).toLowerCase() + serviceName.substring(1)); } catch (Exception e) { try { serviceBean = applicationContext.getBean(serviceName.substring(0, 1).toLowerCase() + serviceName.substring(1) + "Impl"); } catch (Exception e2) { return ServerResponse.error("找不到路径:" + request.getRequestURI()); } } try { Object invoke = MethodUtils.invokeMethod(serviceBean, methodName, param); return ServerResponse.success(invoke); } catch (NoSuchMethodException noSuchMethodException) { return ServerResponse.error("找不到路径:" + request.getRequestURI()); } catch (Exception e) { try { Object target = FieldUtils.readDeclaredField(e, "target", true); Object message = MethodUtils.invokeMethod(target, "getMessage"); return ServerResponse.error((String) message); } catch (Exception e2) { return ServerResponse.error("不可能出现的异常"); } } } catch (AccessDeniedException accessDeniedException) { return ServerResponse.error(accessDeniedException.getMessage()); } catch (Exception e) { return ServerResponse.error("找不到路径:" + request.getRequestURI()); } } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }
public class ServerResponse { public ServerResponse() { super(); } private int status; private Object data; private String message; public static ServerResponse success() { ServerResponse response = new ServerResponse(); response.status = 200; return response; } public static ServerResponse success(Object data) { ServerResponse response = new ServerResponse(); response.status = 200; response.data = data; return response; } public static ServerResponse error() { ServerResponse response = new ServerResponse(); response.status = 500; return response; } public static ServerResponse error(String message) { ServerResponse response = new ServerResponse(); response.status = 500; response.message = message; return response; } public int getStatus() { return status; } public Object getData() { return data; } public String getMessage() { return message; } }
public class RequestContextUtils { public static HttpServletRequest getRequest() { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return requestAttributes.getRequest(); } public static HttpServletResponse getResponse() { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return requestAttributes.getResponse(); } }