// ApiResult 就是返回值,可以根据自己的需求,定义
/**
*/
public interface StorageType {
ApiResult handleStorage();
}
@Service("hdfsStorageType")
public class HdfsStorageType implements StorageType {
@Override
public ApiResult handleStorage() {System.out.println("-----hdfs---storageType-----");return null;
}
}
@Service("ftpStorageType")
public class FtpStorageType implements StorageType {
@Override
public 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的上下文
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;
}// 注册接口StorageType的所有实现的bean,
// 可以按照自己的规则放入 注册中心 serviceImpMap里
@Override
public void afterPropertiesSet() throws Exception {Map<String, StorageType> beanMap = 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);
}
}
结果:
本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/2045657 ,如需转载请自行联系原作者
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态