package com.fzzy.gateway.sc2023.api; 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; @Component public class GatewayRemoteManager implements ApplicationContextAware { public static Map remoteMap = new HashMap<>(); public static Map syncMap = new HashMap<>(); @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map serviceMap1 = applicationContext.getBeansOfType(GatewayRemoteService.class); for (String key : serviceMap1.keySet()) { remoteMap.put(serviceMap1.get(key).getProtocol(), serviceMap1.get(key)); } Map serviceMap2 = applicationContext.getBeansOfType(GatewaySyncService.class); for (String key : serviceMap2.keySet()) { syncMap.put(serviceMap2.get(key).getProtocol(), serviceMap2.get(key)); } } /** * 根据实现协议获取当前实现方法 * * @param protocol * @return */ public GatewayRemoteService getRemoteService(String protocol) { return remoteMap.get(protocol); } /** * 根据实现协议获取当前实现方法 * * @param protocol * @return */ public GatewaySyncService getSyncService(String protocol) { return syncMap.get(protocol); } }