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

如何通过SPI机制去实现读取配置文件并动态加载对应实现类

最近写完鱼皮的RPC项目后,打算整理出来一些编程技巧的模版。

有两种实现:1.ServiceLoader   2.SpiLoader

一、直接使用java.util下的ServiceLoader

首先在resource目录下创建 META-INF/services 目录,并且创一个名称为对应要实现的接口的包路径的空文件,文件中包含对应接口实现类的 完整类路径

ServiceLoader<Serializer> serviceLoader = ServiceLoader.load(Serialize.class);
for(Serializer service : serviceLoader){....
}

二、使用自定义SPI实现

流程:

这一块实现可以具体看:

手写 RPC 框架教程(4 - 序列化器与 SPI 机制) (yuque.com)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SLAM中的块矩阵与schur补
  • 平安银行秋招攻略,考试内容详解
  • 【AI大模型】赋能儿童安全:楼层与室内定位实践与未来发展
  • 安防监控/视频汇聚平台EasyCVR设备录像回看请求播放时间和实际时间对不上,是什么原因?
  • 昇思训练营打卡第二十天(CycleGAN图像风格迁移互换)
  • 基于JavaScript、puppeteer的爬虫
  • 【Unix/Linux】Unix/Linux如何查看系统版本
  • 双系统ubuntu20.04扩容
  • 使用 Qt 和 ECharts 进行数据可视化
  • 百川工作手机实现销售管理微信监控系统
  • The IsA relationship and HasA relationship
  • Ubuntu安装PostgreSQL
  • Python开发 ——循环中的 `continue` 语句
  • DNS隧道
  • Kafka 和 RabbitMQ对比
  • 【刷算法】求1+2+3+...+n
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • echarts花样作死的坑
  • Go 语言编译器的 //go: 详解
  • PHP那些事儿
  • ucore操作系统实验笔记 - 重新理解中断
  • yii2中session跨域名的问题
  • 闭包--闭包作用之保存(一)
  • 初识 beanstalkd
  • 分类模型——Logistics Regression
  • 力扣(LeetCode)56
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 微服务框架lagom
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​用户画像从0到100的构建思路
  • (10)ATF MMU转换表
  • (13)Hive调优——动态分区导致的小文件问题
  • (7)STL算法之交换赋值
  • (8)STL算法之替换
  • (day6) 319. 灯泡开关
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (理论篇)httpmoudle和httphandler一览
  • (力扣)循环队列的实现与详解(C语言)
  • (十) 初识 Docker file
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)React组件、useState、组件样式
  • (四)stm32之通信协议
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core 中插件式开发实现
  • .NET Core引入性能分析引导优化
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • [AI Embedchain] 开始使用 - 全栈
  • [Android]如何调试Native memory crash issue
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [Avalon] Avalon中的Conditional Formatting.