Jaka jest różnica między Service Provider Interface (SPI) a Application Programming Interface (API)?
A dokładniej, w przypadku bibliotek Java, co czyni je API i / lub SPI?
1 odpowiedź
- API to opis klas / interfejsów / metod / ... które wywołujesz i których używasz do osiągnięcia celu, oraz
- SPI to opis klas / interfejsów / metod / ..., które rozszerzasz i wdrażasz, aby osiągnąć cel.
Innymi słowy, API mówi ci, co konkretna klasa / metoda robi dla ciebie, a SPI mówi ci, co musisz zrobić, aby się dostosować.
Zwykle API i SPI są osobne. Na przykład w JDBC klasa Driver jest częścią SPI: Jeśli chcesz po prostu użyć JDBC, nie musisz go używać bezpośrednio, ale każdy, kto implementuje sterownik JDBC, musi zaimplementować tę klasę.
Czasami jednak się pokrywają. Interfejs połączenia to zarówno interfejs SPI, jak i interfejs API: używasz go rutynowo, gdy używasz sterownika JDBC i musi zostać zaimplementowany przez programistę sterownika JDBC.