package com.ld.igds.sh; import com.ld.igds.sh.dto.ApiResponse; import com.ld.igds.sh.param.ApiRequest; import com.ld.igds.sh.service.ApiShService; import com.ld.igds.sh.util.RespCodeEnum; import com.ld.igds.sh.util.RespUtil; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * 接口分发 * @author chen */ @Component public class ApiShManager implements ApplicationContextAware { private static Map apiShServiceMap; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map map = applicationContext .getBeansOfType(ApiShService.class); apiShServiceMap = new HashMap<>(); for (String key : map.keySet()) { apiShServiceMap.put(map.get(key).getInterfaceId(), map.get(key)); } } /** * 执行接口 * * @param request * @return */ @SuppressWarnings("unchecked") public ApiResponse execute(ApiRequest request){ ApiShService service = apiShServiceMap.get(request.getInterfaceId()); if (null == service) { return RespUtil.error(RespCodeEnum.CODE_9999.getCode(), request); } return service.execute(request); } }