当前位置: 首页 > news >正文

企业网站源码 非织梦吉林有做网站的吗

企业网站源码 非织梦,吉林有做网站的吗,wordpress 做门户,哪家公司可以做网站一、问题的提出 在实际工作中#xff0c;我们经常会遇到一个接口及多个实现类的情况#xff0c;并且在不同的条件下会使用不同的实现类。 二、应用场景 springboot 项目中通过 ApplicationContext.getBeansOfType(class) 获取某一接口的所有实现类#xff0c;并通过枚举完…一、问题的提出 在实际工作中我们经常会遇到一个接口及多个实现类的情况并且在不同的条件下会使用不同的实现类。 二、应用场景 springboot 项目中通过 ApplicationContext.getBeansOfType(class) 获取某一接口的所有实现类并通过枚举完成策略模式替代 if/else使代码更加优雅易于拓展。 三、ApplicationContext.getBeansOfType(class) 介绍 T MapString, T getBeansOfType(Nullable ClassT var1) throws BeansException; 从上面的源码上我们可以看出来这个方法能返回一个接口的全部实现类前提是所有实现类都必须由 Spring IoC 容器管理  MapString, TrafficModeService map applicationContext.getBeansOfType(TrafficModeService.class); 从上面的代码上下面案例中工厂类有 Map 中的 String 的值是各个实现类的名称 busModeServiceImpl、trainModeServiceImpl首字母小写Map 中的 value 是各个 key 对应的策略实现类 四、案例 demo 假设从 A 点到 B 点有多种交通方式每种交通方式的费用不同可以根据乘客的需要进行选择。按照该需求设计如下 有一个交通方式的接口接口有两个方式一个查询费用、一个查询该交通方式的类型同时我们可以用一个枚举类型类标识交通类型。 我们还需要一个工厂类来根据交通类型标识查找该交通类型的 Bean 实例从而使用该实例获得交通类型的详细信息及该交通类型的操作。 1、TrafficCodeEmun 枚举制定接口信息 AllArgsConstructor public enum TrafficCodeEmun {TRAIN(TRAIN,火车),BUS(BUS,大巴),;private final String code;private final String desc; } 2、TrafficModeFactory 工厂类获取接口实现 bean并存储到 ConcurrentHashMap通过枚举获取对应的实现 bean Component Slf4j public class TrafficModeFactory implements ApplicationContextAware {public static final ConcurrentHashMapTrafficCodeEmun, TrafficModeService TRAFFIC_BEAN_MAP new ConcurrentHashMap();Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {log.info(TrafficModeFactory 启动开始);MapString, TrafficModeService map applicationContext.getBeansOfType(TrafficModeService.class);map.forEach((key, value) - TRAFFIC_BEAN_MAP.put(value.getCode(), value));log.info(TrafficModeFactory 启动完成);}public static T extends TrafficModeService T getTrafficMode(TrafficCodeEmun code) {return (T) TRAFFIC_BEAN_MAP.get(code);}} 3、定义策略接口 TrafficModeService public interface TrafficModeService {/*** 查询交通方式编码* return 编码*/TrafficCodeEmun getCode();/*** 查询交通方式的费用单位分* return 费用*/Integer getFee();} 4、策略实现类 BusModeServiceImpl、TrainModeServiceImpl Service public class TrainModeServiceImpl implements TrafficModeService {/*** 查询交通方式编码* return 编码*/Overridepublic TrafficCodeEmun getCode() {return TrafficCodeEmun.TRAIN;}/*** 查询交通方式的费用单位分* return 费用*/Overridepublic Integer getFee() {return 5000;}} 5、定义 controller PostMapping(/test3)public Integer test3() {Integer fee TrafficModeFactory.getTrafficMode(TrafficCodeEmun.TRAIN).getFee();return fee;} 6、启动项目访问 localhost:8080/testUtils/test3 测试即可看到对应接口返回 5000 五、总结 一个策略接口被多个策略实现类所实现具体使用哪一种根据用户选择的类型来和 Map 里的 key 做匹配获取对应的实现来调用具体的策略方法。使用 ConcurrentHashMap 而不使用 HashMap 是 put 的时候键和值都不能为空防止 key 对应的实现类没有注入进去导致空指针的问题。 六、参考文档 使用Spring的getBeansOfType实现接口多实现类的动态调用 applicationContext.getBeansOfType(class)获取某一接口的所有实现类应用于策略模式简单demo
http://www.w-s-a.com/news/962953/

相关文章:

  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司
  • 衡水做网站推广的公司wordpress相册滑动
  • 不用域名也可以做网站公司网站建设制作难么
  • 学做网站培训机构wordpress 图片拉伸
  • 成都捕鱼网站建设wordpress自定义文章类别
  • wordpress网站怎么加速湖北网站建设企业
  • 迁安做网站中的cms开发南平网站建设公司
  • 肥西县住房和城乡建设局网站代驾系统定制开发
  • 网站建设明细报价表 服务器qq是哪家公司的产品
  • html链接网站模板wordpress怎么调用简码
  • 网站域名怎么查简述网站推广的五要素
  • 咸宁网站设计公司app安装下载
  • 丝网外贸做哪些网站最优的赣州网站建设
  • 如何做网站不被查网站开发工程师岗位说明书
  • 做网站需要vps吗网站建设后怎样发信息
  • 网站建立风格二手交易网站开发可参考文献
  • 成都微信网站开发优化大师优化项目有哪些