今天就跟大家聊聊有關在java中使用SPI實現(xiàn)創(chuàng)建一個可擴展的應用程序,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。
SPI簡介
SPI的全稱是Java Service Provider Interface。是java提供的一種服務發(fā)現(xiàn)的機制。
通過遵循相應的規(guī)則編寫應用程序之后,就可以使用ServiceLoader來加載相應的服務了。
SPI的實現(xiàn)主要分為4個部分:
Service Provider Interface: SPI是一個interface或者是抽象類,其中定義了我們需要擴展實現(xiàn)的功能。
Service Providers:這是SPI的具體實現(xiàn),提供了具體的實現(xiàn)功能
SPI Configuration File:SPI的配置文件,通過在配置文件我們來配置相關的SPI發(fā)現(xiàn)信息。
ServiceLoader: ServiceLoader是用來加載和發(fā)現(xiàn)服務的java類,并提供了很多有用的方法。
SPI的普通java實現(xiàn)
講完SPI的定義,大家可能還是不清楚SPI到底是做什么的,又該怎么使用它。
不用急,我們下面通過一個例子來說明。
首先創(chuàng)建一個module:SPI-service,里面主要定義了一個ModuleService接口:
public interface ModuleService {
}
然后再分別創(chuàng)建兩個module,作為ModuleService的實現(xiàn):
public class ModuleServiceA implements ModuleService { public ModuleService getModuleService(){ return new ModuleServiceA(); } }