java spring boot dubbo SPI

参考

  • https://blog.51cto.com/maxiaobian/3005329
  • https://blog.csdn.net/qq_35190492/article/details/108256452

SPI是什么

  • Service Provider Interface服务提供者接口
  • 一种服务发现机制
  • 通过加载配置文件中指定类
  • 一般用于框架扩展使用。在不侵入框架的情况下,通过约定(加载配置文件中指定类),扩展框架功能

java

  • META-INF/services/类名
    • META-INF/services/com.github.kongwu.spisamples.SuperLoggerConfiguration:
    • com.github.kongwu.spisamples.XMLConfiguration
  • 加载工具类:java.util.ServiceLoader
  • 实例:数据库驱动接口
  • 有多个实现的情况下,取最后一个
    • 最后一个是靠ClassPath的顺序确定的,不好
  • 缺点:
    • 无法按需加载,它会实例化所有实现
    • 无法确定/指定加载某一个实现

Dubbo

  • META-INF/dubbo/接口全限定名
    • optimusPrime = org.apache.spi.OptimusPrime
    • bumblebee = org.apache.spi.Bumblebee
  • @SPI,不是同一个例子
    在这里插入图片描述
  • 使用
    在这里插入图片描述
  • 优点
    • 可以指定某个类:通过别名
    • 自适应扩展 SPI

spring

  • META-INF/spring.factories,一个配置文件而不是一个接口一个配置文件
    • Logging Systems

      • org.springframework.boot.logging.LoggingSystemFactory=\
      • org.springframework.boot.logging.logback.LogbackLoggingSystem.Factory,\
      • org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.Factory,\
      • org.springframework.boot.logging.java.JavaLoggingSystem.Factory
    • PropertySource Loaders

      • org.springframework.boot.env.PropertySourceLoader=\
      • org.springframework.boot.env.PropertiesPropertySourceLoader,\
      • org.springframework.boot.env.YamlPropertySourceLoader
  • 目前主要用在spring boot

对比

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值