1. 程式人生 > 程式設計 >JAVA SPI特性及簡單應用程式碼例項

JAVA SPI特性及簡單應用程式碼例項

最近在研究dubbo時,發現了JAVA的SPI特性。SPI的全名為Service Provider Interface,是JDK內建的一種服務發現機制。

具體實現:

1、定義一個介面

public interface IShape {
  /**
   * 渲染
   */
  void render();
}

2、新增幾種實現

public class CircularShape implements IShape {

  @Override
  public void render() {
    System.out.println(this.getClass().getName() + "正在繪製圓形");
  }
}
public class SquareShape implements IShape {

  @Override
  public void render() {
    System.out.println(this.getClass().getName() + "正在繪製正方形");
  }
}

3、在META-INF/services/com.zhi.demo.IShape檔案新增資訊

com.zhi.demo.impl.SquareShape
com.zhi.demo.impl.CircularShape

4、測試

public class SpiTest {
  public static void main(String[] args) {
    ServiceLoader<IShape> loaders = ServiceLoader.load(IShape.class);
    for (IShape shape : loaders) {
      shape.render();
    }
  }
}

5、執行結果

com.zhi.demo.impl.SquareShape正在繪製正方形
com.zhi.demo.impl.CircularShape正在繪製圓形

程式碼結構圖如下

JAVA SPI特性及簡單應用程式碼例項

6、實際應用,sum為各大資料廠商提供了java.sql.Driver介面,每個廠商提供自己的實現。

JAVA SPI特性及簡單應用程式碼例項

JAVA SPI特性及簡單應用程式碼例項

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。