本文共 1591 字,大约阅读时间需要 5 分钟。
// ApiResult 就是返回值,可以根据自己的需求,定义
/***/
public interface StorageType { ApiResult handleStorage();}@Service("hdfsStorageType")
public class HdfsStorageType implements StorageType {@Overridepublic ApiResult handleStorage() { System.out.println("-----hdfs---storageType-----"); return null;}
}
@Service("ftpStorageType")
public class FtpStorageType implements StorageType {@Overridepublic ApiResult handleStorage() { System.out.println("-----ftp---storageType-----"); return null;}
}
将多个子类,注册到一个map容器里
@Service("register")
public class Register implements InitializingBean, ApplicationContextAware { private Map<String, StorageType> serviceImpMap = new HashMap<String, StorageType>();private ApplicationContext applicationContext;// 获取Spring的上下文@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext;}// 注册接口StorageType的所有实现的bean,// 可以按照自己的规则放入 注册中心 serviceImpMap里@Overridepublic void afterPropertiesSet() throws Exception { MapbeanMap = applicationContext.getBeansOfType(StorageType.class); String name = null; for (StorageType storageType : beanMap.values()) { name = storageType.getClass().getSimpleName(); System.out.println("---key:\t" + name); // 将类名,作为 key, serviceImpMap.put(name, storageType); }}public StorageType getStorageType(String name) { return serviceImpMap.get(name);}
}
结果:
转载于:https://blog.51cto.com/xingej/2045657