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

Sentinel 的 SPI 机制

Java SPI

Java SPI是通过策略模式实现的,一个接口提供多个实现类,而使用哪个实现类不在程序中确定,而是配置文件配置的,具体步骤如下

  1. 定义接口及其对应的实现类
  2. 在META-INF/services目录下创建以接口全路径命名的文件
  3. 文件内容为实现类的全路径名
  4. 在代码中通过java.util.ServiceLoader#load加载具体的实现类

写个Demo演示一下

publicinterfaceCar{voidgetBrand();}
publicclassBenzCarimplementsCar{@OverridepublicvoidgetBrand(){System.out.println("benz");}}
publicclassBMWCarimplementsCar{@OverridepublicvoidgetBrand(){System.out.println("bmw");}}

org.apache.dubbo.Car的内容如下

org.apache.dubbo.BenzCar org.apache.dubbo.BMWCar

测试类

publicclassJavaSpiDemo{publicstaticvoidmain(String[]args){ServiceLoader<Car>carServiceLoader=ServiceLoader.load(Car.class);// benz// bmwcarServiceLoader.forEach(Car::getBrand);}}

Sentinel SPI

Java SPI vs Sentinel SPI

为了理解 Sentinel 为什么重写 SPI,可以看它们的对比:

特性Java 原生 SPI (ServiceLoader)Sentinel SPI (SpiLoader)
配置文件路径META-INF/services/META-INF/services/ 或 META-INF/csp/
加载方式每次调用产生新实例,懒加载内部使用 ConcurrentHashMap 缓存,支持单例模式
加载顺序/优先级无序(取决于 classpath 顺序)支持通过 @Spi(order = …) 设置加载顺序/优先级
排序方向支持 ORDER_ASC(升序)和 ORDER_DESC(降序)
条件过滤支持通过注解按条件按需加载
http://www.jsqmd.com/news/1303872/

相关文章:

  • 互联网行业黑话全解析:从战略到执行,解码高效沟通与协作
  • UE5插件编译指南:从源码到可执行插件的完整流程
  • TSB空间斩特效:本地部署与游戏开发集成实践
  • 特殊字符串处理全攻略:从编码安全到工程实践
  • 【数据分享】1901-2025年我国1km分辨率逐月降水栅格数据
  • 白山母婴除甲醛公司测甲醛中心怎么选:金耀母婴除甲醛标准、流程、避坑指南 - CMA甲醛检测中心
  • 博图SCL中PEEK/POKE指令:突破标准IO映射,实现高速与第三方模块访问
  • C语言整数类型详解:从int、unsigned到sizeof与进制表示
  • 2026 长春市南关区正规管道疏通优质服务商家详解 全域街道乡镇上门全覆盖 - 园子一号
  • 5分钟实现智能文件归类助手:基于Agent技术的解决方案
  • Python脚本封装成标准库:从项目结构到PyPI发布的完整指南
  • 视频播放器导入外部字幕教程:保姆级指南
  • 如何3步实现智能图片分层:Layerdivider的终极效率指南
  • 2026 哈尔滨市道里区正规管道疏通优质服务商家详解 全域街道乡镇上门服务全覆盖 - 园子一号
  • 汕头CMA甲醛检测公司怎么选:只测不除的专业实验室——国康CMA检测及公共卫生检测 - 副本 - 信誉隆金银铂奢回收
  • 暖通行业标杆:技术、服务与商业模式的成功之道
  • 每日一句_20260731
  • 10101010
  • GNN预测分子爆炸性:原理、实现与工业应用
  • # 电脑如何设置保护眼睛 ,防止眼疲劳,低蓝光 dark reader 浏览器黑色背景观看,防蓝光 防反光
  • 合肥母婴除甲醛公司测甲醛中心怎么选:金耀母婴除甲醛标准、流程、避坑指南 - CMA甲醛检测中心
  • 大数据核心知识笔记
  • 2026年工业喷码机厂家推荐排行榜:小字符喷码机、手持喷码机、激光喷码机源头实力品牌精选 - 优企名品
  • 2026年精选:衡水变更经营范围优质服务商深度解析 - 装修教育财税推荐2026
  • Prompt工程:提升AI编程效率的关键技术
  • Sentinel 工作主流程
  • 2026年8月菏泽市广电1000M单宽带申请避坑与实测攻略 - 找卡家园
  • 计算机毕业设计之基于springboot+vue的扶贫助农系统
  • 语言模型扩展法则:AI工程师必知的实战指南
  • 欧普触摸台灯维修全攻略:从电容感应原理到芯片级故障诊断