今天就跟大家聊聊有關在java中使用SPI實現(xiàn)創(chuàng)建一個可擴展的應用程序,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。
公司主營業(yè)務:成都網站建設、成都網站制作、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出高唐免費做網站回饋大家。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(); } }