Spring boot 之 动态的获取不同的实现类

 2023-09-15 阅读 24 评论 0

摘要:声明接口// ApiResult 就是返回值,可以根据自己的需求,定义 /** 根据不同的处理类型,来选择不同的处理方案 @author erjun */ public interface StorageType { ApiResult handleStorage(); } 定义两个实现类@Service("hdfsStorageType"
  1. 声明接口

// ApiResult 就是返回值,可以根据自己的需求,定义
/**

  • 根据不同的处理类型,来选择不同的处理方案
  • @author erjun
  • */
    public interface StorageType {
    ApiResult handleStorage();
    }

  1. 定义两个实现类

@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;
}

}

  1. 定义一个Register类

将多个子类,注册到一个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);
}

}

  1. controller层进行调用

Spring  boot 之 动态的获取不同的实现类

  1. POST 测试:

Spring  boot 之 动态的获取不同的实现类

Spring  boot 之 动态的获取不同的实现类

结果:

Spring  boot 之 动态的获取不同的实现类











本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/2045657 ,如需转载请自行联系原作者





版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/64025.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息