服务供给接口
英文名为Service Provider Interface,简称为SPI,是Java的一个内置标準,允许不同的开发者去实现某个特定的服务。
基本介绍
- 中文名:服务供给接口
- 外文名:Service Provider Interface
- 简称:SPI
- 含义:提供某种特定服务的接口
定义
英文名为Service Provider Interface,简称为SPI。服务提供接口即用于提供某种特定服务的接口。
性质
SPI是Java 1.5新添加的一个内置标準,允许不同的开发者去实现某个特定的服务。一个Service就是一套着名的接口或抽象类,而Service Provider是这个Service的一个特定实现类。
套用
在Java中Service Provider按Service接口分类,同一个Service只能有一个实现类被注册。因为在实际中,Service都是单例的。如果同时注册了多个,后面的Service Provider将覆盖前面注册的Service Provider。
声明一个service provider需要在JAR包的META-INF目录下创建一个services子目录,并且为每一个service provider提供一个以Service全名命名的档案。假如JAR包有一个类com.mycompany.mypkg.MyServiceImpl实现了javax.someapi.SomeService接口,JAR包中应该包含一个档案:
META-INF/services/javax.someapi.SomeService
这个档案中包含一行:
com.mycompany.mypkg.MyService