Java SPI(服務發現機制)

簡介

SPI 全稱爲Service Provider Interface,是一種服務發現機制。SPI 的本質是將接口實現類的全限定名配置在文件中,並由服務加載器讀取配置文件,加載實現類。這樣可以在運行時,動態爲接口替換實現類。正因此特性,我們可以很容易的通過 SPI 機制爲我們的程序提供拓展功能。

Java原生SPI使用步驟

1 定義接口

package com.chen.service;

public interface Root {

    void sayHello();
}

2 定義實現

  • 實現1
package com.chen.impl;

import com.chen.service.Root;

public class Bumblebee implements Root {
    @Override
    public void sayHello() {
        System.out.println("Hello, I am Bumblebee.");
    }
}
  • 實現2
package com.chen.impl;

import com.chen.service.Root;

public class OptimusPrime implements Root {
    @Override
    public void sayHello() {
        System.out.println("i am Optimus Prime");
    }
}

3 創建配置文件

創建名稱爲接口全限定名的文件,放置於resources/META-INF/services目錄下

com.chen.impl.OptimusPrime
com.chen.impl.Bumblebee

4 調用實現

public class JavaSPITest {

    @Test
    public void sayHello(){
        ServiceLoader<Root> serviceLoader = ServiceLoader.load(Root.class);
        System.out.println("Java SPI");
        serviceLoader.forEach(Root::sayHello);
    }
}

通過此種方式便可以調用我們所定義到的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章