服务提供者接口 (SPI)和应用程序编程接口 (API)有什么区别?
更具体地说,对于 Java 库,是什么让它们成为 API 和/或 SPI?
换句话说,API 告诉您特定的类/方法为您做了什么,而 SPI 告诉您必须做什么才能符合要求。
通常 API 和 SPI 是分开的。例如,在 JDBC中,Driver该类是 SPI 的一部分:如果您只是想使用 JDBC,则不需要直接使用它,但是实现 JDBC 驱动程序的每个人都必须实现该类。
Driver
但是,有时它们会重叠。接口既是SPI又 是 API:在使用JDBC驱动的时候是常规使用的,需要JDBC驱动的开发者实现。Connection
Connection