Service provider interface (SPI) is an API intended to be implemented or extended by a third party.
[1][2][3] From Java documentation: A service is a well-known set of interfaces and (usually abstract) classes.
Service providers can be installed in an implementation of the Java platform in the form of extensions, that is, jar files placed into any of the usual extension directories.
Providers can also be made available by adding them to the application's class path or by some other platform-specific means.
In the Java Runtime Environment, SPIs are used in:[1][2] This programming-language-related article is a stub.