Java SPI 服务机制

SPI:Service Provider Interface,目的是提供接口,让第三方(服务厂商或扩展框架开发者)提供自定义实现的服务功能。例如,JDBC驱动,可以加载MySQL、Oracle、或者SQL Server等。

SPI约定:

1、在工程的META-INF/services/目录下,以接口的全限定名作为文件名,文件内容为实现接口的服务类;

2、使用ServiceLoader动态加载META-INF/services下的实现类;

3、接口的实现类需含无参构造函数;

SPI 问题考虑

1、如果在META-INF/services下有接口实现类,存在多个(例如jar包下面也有相应),系统如何处理?

答:会全部加载,ServiceLoader在加载资源文件时,已经考虑了这个问题。

2、SPI,和Dubbo等相比,区别在哪里?

答:SPI的目的是提供给各种不同服务相同的访问接口。而Dubbo等微服务是将服务拆分形成功能相对独立的、维护性强的服务。两者出发点并不一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容