河北企业建站系统信息,网站滑动效果怎么做,做网站的赚钱吗,宝山php网站开发培训整来整去有点像一个微型openFeign#xff0c;虽然简陋了点#xff0c;但在改善代码质量和提高代码复用、可靠性、功能定制方面有着不错的效果。
public abstract class RemotingBeanT implements ResourceLoaderAware, FactoryBeanT {private ResourceLoade…整来整去有点像一个微型openFeign虽然简陋了点但在改善代码质量和提高代码复用、可靠性、功能定制方面有着不错的效果。
public abstract class RemotingBeanT implements ResourceLoaderAware, FactoryBeanT {private ResourceLoader resourceLoader;public abstract Object doInvoke(Remoting remoting, Method method, Object[] args);Overridepublic T getObject() {ClassLoader classLoader resourceLoader.getClassLoader();Class? objectType getObjectType();Class?[] interfaceClass new Class[]{objectType};return (T) Proxy.newProxyInstance(classLoader, interfaceClass, (proxy, method, args) - {if (toString.equals(method.getName())) {// 此处会影响调试时那个bean的名字return proxy-- objectType.getName();}// 只算理带注解的方法Remoting remoting method.getAnnotation(Remoting.class);if (null remoting) {return null;}return doInvoke(remoting, method, args);});}Overridepublic void setResourceLoader(NotNull ResourceLoader resourceLoader) {this.resourceLoader resourceLoader;}Overridepublic Class? getObjectType() {// 直接获取泛型省去子类再做实现return ZYSpringUtils.findGenericClass(this.getClass());}
}注解类
Target(ElementType.METHOD)
Retention(RetentionPolicy.RUNTIME)
SuppressWarnings(unused)
public interface Remoting {String value();// 下面是一些简易的冗余的处理结果集的要素用于某些特殊方法调用等Class?[] returnClass() default {};boolean isCollectResult() default false;boolean isBaseResult() default false;boolean isVoidResult() default false;boolean isJsonModuleResult() default false;
}示例 public interface UserV41Service {Remoting(/user/saveOpenUser)String insertUser(UserV41Po user);Remoting(/user/editOpenUser)String editUser(UserV41Po user);Remoting(/user/updatepassword)void editPassword(UserV41PasswordPo passwordPo);
}Componen
public class UserV41ServiceBean extends RemotingBeanUserV41Service {Autowiredprivate FrameworkProperties frameworkProperties;Overridepublic Object doInvoke(Remoting remoting, Method method, Object[] args) {String token generateToken();if (null token) {return null;}MapString, String headers new HashMap();headers.put(HttpHeaders.AUTHORIZATION, token);String path remoting.value();String host frameworkProperties.getLibraryHost();String targetUrl host path;MapString, Object params ZYBeanUtils.beanToMap(args[0]);String result ZYHttpUtils.sendHttpPost(params, headers, targetUrl);// TODO xxxx}
}