SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。
上代码
public interface UploadCDN {
void upload(String url);
}
public class IQiyiCDN implements UploadCDN{
@Override
public void upload(String url) {
System.out.println("爱奇艺CDN上传");
}
}
public class YoukuCDN implements UploadCDN{
@Override
public void upload(String url) {
System.out.println("优酷CDN上传");
}
}
- META-INF/services/cn.com.ebidding.spi.develop.UploadCDN
cn.com.ebidding.spi.develop.IQiyiCDN
cn.com.ebidding.spi.develop.YoukuCDN
- 测试
ServiceLoader<UploadCDN> uploadCDN = ServiceLoader.load(UploadCDN.class);
for (UploadCDN cdn : uploadCDN) {
cdn.upload("filePath://java/upload");
}