Java中的SPI原理浅谈

  在面向对象的程序设计中,模块之间交互采用接口编程,通常情况下调用方不需要知道被调用方的内部实现细节,因为一旦涉及到了具体实现,如果需要换一种实现就需要修改代码,这违反了程序设计的"开闭原则"。所以我们一般有两种选择:一种是使用API(Application Programming Interface),另一种是SPI(Service Provider Interface),API通常被应用程序开发人员使用,而SPI通常被框架扩展人员使用。

创新互联建站专业为企业提供北海网站建设、北海做网站、北海网站设计、北海网站制作等企业网站建设、网页设计与制作、北海企业网站模板建站服务,10多年北海做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

  在进入下面学习之前,我们先来再加深一下API和SPI这两个的印象:

  API:由实现方制定接口标准并完成对接口的不同实现,这种模式服务接口从概念上更接近于实现方;

  SPI:由调用方制定接口标准,实现方来针对接口提供不同的实现;从前半句话我们来看,SPI其实就是"为接口查找实现"的一种服务发现机制;这种模式,服务接口组织上位于调用方所在的包中,实现位于独立的包中。

  API和SPI简略图示:

  

  看完上面的简单图示,相信大家对API和SPI的区别有了一个大致的了解,现在我们使用SPI机制来实现我们一个简单的日志框架:

  第一步,创建一个maven项目命名为spi-interface,定义一个SPI对外服务接口,用来后续提供给调用者使用;

package cn.com.wwh;
/**
 * 
 * @FileName Logger.java
 *@version:1.0
 * @Description: 服务提供者接口
 *@author: wwh
 * @date: 2022年9月19日 上午10:31:53
*/
public interface Logger {
    
/**
     * 
     * @Description:(功能描述)
     *@param msg
*/
    public void info(String msg);
    
/**
     * 
     * @Description:(功能描述)
     *@param msg
*/
    public void debug(String msg);
}

分享名称:Java中的SPI原理浅谈
文章链接:http://myzitong.com/article/dscgigd.html