Ein Service Provider Interface (SPI) ist ein Application Programming Interface (API), das durch eine Drittkomponente implementiert werden soll. Es dient dazu, Framework-Erweiterungen zu ermöglichen und trägt zur Entwicklung austauschbarer Komponenten bei.
Details
API werden meistens als provided interfaces verstanden, d. h. Schnittstellen, die durch die sie implementierende Komponente definiert werden. D. h. eine Komponente hat die Hoheit über die Interfacedefinition und stellt mindestens eine Implementation (meistens die einzige Implementation) zur Verfügung. Beispiele für provided interfaces sind alle öffentlich aufrufbaren proprietären und keinem Standard entsprechenden REST API der großen Cloudanbieter wie Amazon Web Services, Microsoft Azure und Google Cloud Platform.
Ein SPI hingegen bezeichnet ein required interface, also eine Schnittstellenspezifikation, die von einer bestimmten davon abhängigen Komponente verlangt bzw. erwartet wird. Ein Programm, das Plug-ins unterstützt, wird zum Beispiel required interfaces definieren, die von den Entwicklern von Plug-ins eingehalten werden müssen. Ebenso wird eine Komponente, die sich ihre Abhängigkeiten per Dependency Injection übergeben lässt, für jede Abhängigkeit ein required interface definieren, das die Syntax und Semantik (Kommunikationsprotokoll) der Interaktion damit vorgibt.