Service Provider Interface (SPI)和Application Programming Interface (API)有什么区别?
更具体地说,对于Java库,是什么让它们成为API和/或SPI?
Service Provider Interface (SPI)和Application Programming Interface (API)有什么区别?
更具体地说,对于Java库,是什么让它们成为API和/或SPI?
换句话说,API告诉您特定的类/方法为您做了什么,SPI告诉您必须做什么才能符合.
通常API和SPI是分开的.例如,在JDBC中,the Driver
class是SPI的一部分:如果您只是想使用JDBC,您不需要直接使用它,但是每个实现JDBC驱动程序的人都必须实现该类.
然而,有时它们会重叠.The Connection
interface是both SPI和API:当您使用JDBC驱动程序时,您经常使用它,它需要由JDBC驱动程序的开发人员实现.