這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Java SPI機制的示例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、招遠(yuǎn)網(wǎng)站維護、網(wǎng)站推廣。
MySQL-connector
JDK中的nio SPI
再如,logback-classic
接下來,我們就來聊聊java SPI機制
一、SPI概念和規(guī)范
1.1 SPI概念
1.2 SPI規(guī)范
需要設(shè)置/META-INF/目錄
/META-INF/services
放到classpath下
/META-INF/services/目錄下放置配置文件
文件名是接口全路徑名
文件內(nèi)部是要實現(xiàn)的接口實現(xiàn)類
文件編碼為UTF-8
使用ServiceLoad的load方法
二、SPI示例
編寫一個GreetingService接口
package com.wangmengjun.tutorial.spi;
public interface GreetingService {
void sayHello();
}
編寫2個實現(xiàn)類,分別輸出英文和中文
package com.wangmengjun.tutorial.spi.impl;
import com.wangmengjun.tutorial.spi.GreetingService;
public class EnglishGreetingServiceImpl implements GreetingService{
public void sayHello() {
System.out.println("Hello , This is SPI");
}
}
package com.wangmengjun.tutorial.spi.impl;
import com.wangmengjun.tutorial.spi.GreetingService;
public class ChineseGreetingServiceImpl implements GreetingService {
public void sayHello() {
System.out.println("你好,這是SPI");
}
}
創(chuàng)建META-INF文件目錄并設(shè)置實現(xiàn)類
使用ServiceLoader
package com.wangmengjun.tutorial.spi;
import java.util.Iterator;
import java.util.ServiceLoader;
public class SpiMain {
public static void main(String[] args) {
ServiceLoader
loader= ServiceLoader.load(GreetingService.class); Iterator
greetingIter = loader.iterator(); while(greetingIter.hasNext()) {
GreetingService service= greetingIter.next();
System.out.println(service.getClass().getName());
service.sayHello();
}
}
}
輸出:
com.wangmengjun.tutorial.spi.impl.EnglishGreetingServiceImplHello , This is SPIcom.wangmengjun.tutorial.spi.impl.ChineseGreetingServiceImpl你好,這是SPI
經(jīng)過上述幾個步驟,一個spi的簡單示例就完成了。
// The lazy-lookup iterator for iterator operations private Iterator> lookupIterator1; private final List instantiatedProviders = new ArrayList<>();
上述就是小編為大家分享的Java SPI機制的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。