• 第三方接口调用框架


    最近给公司写了一套第三方接口调用的框架,为了规范并帮助业务稳定的允许,特写了这个框架。

    ###框架结构
    Invoker.invoking	门面
    	-BizService	业务接口
    	-BizAOPService	业务切面
    	+invoking	业务接口调用
    		BizService.check	参数检查
    		BizService.pre	业务前置调用
    		BizAOPService.pre 业务切面前置调用
    		BizService.execute	业务调用
    		BizAOPService.after	业务切面后置调用
    		BizService.after	业务后只调用
    		BizService.handlerException	异常处理
    

      框架结构实际很简单,只是将相同的东西模板化,不明确的东西抽象化,不能主导的东西桥接出去。

    参数适配器

    import java.io.Serializable;
    
    public interface RequestAdaptor<T> extends Serializable {
    
    	/**
    	 * 参数适配
    	 */
    	PayRequest<T> adapt();
    
    	/**
    	 * 参数检查
    	 */
    	void check();
    	
    }
    

      

    实际这里我完全可以将 BizAOPService 放入一个集合形成类似拦截器一样的存在,这里看具体的需求了。

    public interface Invoker<M,N> {
    
    	void invoking(BizService<M,N> bizService, BizAOPService<M,N> bizAOPService, M m, N n) throws Exception ;
    	
    }
    

     

    public interface BizService<M,N> {
    	
    	/**参数校验*/
    	void check(M request, N response);
    	/**调用前处理 如内置参数组装,更新业务状态*/
    	void pre(M request, N response);
    	/**接口调用*/
    	void execute(M request, N response);
    	/**调用后处理 更新业务状态*/
    	void after(M request, N response);
    	/**参数校验异常处理 */
    	void checkException(M request, N response, Exception e) throws Exception ;
    	/**调用前异常处理*/
    	void preException(M request, N response, Exception e) throws Exception ;
    	/**调用异常处理*/
    	void executeException(M request, N response, Exception e) throws Exception ;
    	/**调用后异常处理*/
    	void afterException(M request, N response, Exception e) throws Exception ;
    	
    }
    

      

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public abstract class AbstractBizService<M,N> implements BizService<M,N>{
    	
    	private static final Logger LOGGER = LoggerFactory.getLogger(AbstractBizService.class);
    
    	@Override
    	public void check(M request, N response) {
    		LOGGER.info("接口调用参数检查:{},{}", request, response);
    	}
    
    	@Override
    	public void pre(M request, N response) {
    		LOGGER.info("调用前处理:{},{}", request, response);
    	}
    
    	@Override
    	public void after(M request, N response) {
    		LOGGER.info("调用后处理:{},{}", request, response);
    	}
    
    	@Override
    	public void checkException(M request, N response, Exception e) throws Exception {
    		LOGGER.info("接口调用参数检查异常处理:{},{}", request, response, e);
    		throw e;
    	}
    
    	@Override
    	public void preException(M request, N response, Exception e)  throws Exception {
    		LOGGER.info("调用前异常处理:{},{}", request, response, e);
    		throw e;
    	}
    
    	@Override
    	public void executeException(M request, N response, Exception e)  throws Exception {
    		LOGGER.info("接口调用异常处理:{},{}", request, response, e);
    		throw e;
    	}
    
    	@Override
    	public void afterException(M request, N response, Exception e)  throws Exception {
    		LOGGER.info("调用后异常处理:{},{}", request, response, e);
    		throw e;
    	}
    
    
    }
    
    public interface BizAOPService<M,N> {
    
    	void pre(M request, N response);
    	
    	void after(M request, N response);
    	
    	String getBizNo(M request);
    	
    }
    

      

  • 相关阅读:
    01 mybatis框架整体概况(2018.7.10)-
    第一课(2018.7.10)
    JavaEE 企业级分布式高级架构师课程_汇总贴
    5-1条件运算符 & 5-2
    5-3运算符的优先级
    4-3逻辑非运算符及案例 & 4-4
    4-1逻辑与运算符介绍 & 4-2逻辑或运算符介绍
    3-3if-else条件结构 & 3-4 & 3-5
    3-2if条件结构
    3-1关系运算符
  • 原文地址:https://www.cnblogs.com/yun965861480/p/11511920.html
Copyright © 2020-2023  润新知