第三方接口調用框架

最近給公司寫了一套第三方接口調用的框架,爲了規範並幫助業務穩定的容許,特寫了這個框架。java

 

 

###框架結構
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 放入一個集合造成相似攔截器同樣的存在,這裏看具體的需求了。ide

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);
	
}
相關文章
相關標籤/搜索