Skip to content

SPI机制的设计思路和使用场景没有讲到核心 #2378

@mangyimang

Description

@mangyimang

原文讲述SPI时,试图阐明其使用场景和原理,但遗憾的是前者探讨的不完全,严格来讲没有涉及到核心。以下是问题分析:

  • 原文表述:“SPI 即 Service Provider Interface ,字面意思就是:“服务提供者的接口”,我的理解是:专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服务实现者解耦,能够提升程序的扩展性、可维护性。修改或者替换服务实现并不需要修改调用方。”
  • 问题:拿原文所举的日志例子来说,这个例子本身确实使用的是SPI机制实现的,但是请考虑以下三个问题:
  1. 为什么第三方实现商需要把你的jar包作为其实现规范?
  2. 规范应该是谁制定?谁实现?谁发现?谁加载?谁使用?

其实考虑以上问题无法完全得出SPI其实是为了原文所述的使用场景来设计的,这也暗含了这项机制的真正使用场景。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions