SPI初識(shí)

1.What is SPI?

?????? SPI是上游產(chǎn)商給服務(wù)供應(yīng)商提供的接口啊胶,供應(yīng)商遵循接口契約提供自己的實(shí)現(xiàn).啤贩。提供了服務(wù)接口的一種實(shí)現(xiàn)之后子库,在jar包的META-INF/services/目錄里同時(shí)創(chuàng)建一個(gè)以服務(wù)接口命名的文件睁冬。該文件里就是實(shí)現(xiàn)該服務(wù)接口的具體實(shí)現(xiàn)類(lèi)蝌诡。而當(dāng)外部程序裝配這個(gè)模塊的時(shí)候溉贿,就能通過(guò)該jar包META-INF/services/里的配置文件找到具體的實(shí)現(xiàn)類(lèi)名枫吧,并裝載實(shí)例化浦旱,完成模塊的注入。 基于這樣一個(gè)約定就能很好的找到服務(wù)接口的實(shí)現(xiàn)類(lèi)九杂,而不需要再代碼里制定颁湖。簡(jiǎn)單來(lái)講就是為某個(gè)接口尋找服務(wù)實(shí)現(xiàn)的機(jī)制。

2.SPI & dubbo

對(duì)于多數(shù)看過(guò)dubbo源碼的小伙伴例隆,對(duì)于SPI應(yīng)該再熟悉不過(guò)了甥捺,幾乎多數(shù)的部分都是通過(guò)spi實(shí)現(xiàn)的。

dubbo官網(wǎng)架構(gòu)圖

此圖來(lái)源于dubbo官網(wǎng)镀层,圖片最右面的標(biāo)注說(shuō)明:只有Service 和 Config 層為 API镰禾,其它各層均為 SPI〕辏可見(jiàn)SPI在dubbo中是多么重要的組成不分吴侦。

3.SPI java 示例

1.定義接口

public interface ICall {

?????? public String call();

}

2.增加實(shí)現(xiàn)類(lèi)

public class DogCall implements ICall{

???? public String call() {

????????????? return "汪汪汪";

????? }

}

3.在增加文件 com.zxx.spi.ICall

在路徑src/main/resources 路徑下增加META-INF/services 路徑,并添加

“com.zxx.spi.ICall” 為文件名的文件坞古。

內(nèi)容為:com.zxx.spi.impl.DogCall 注:加粗部分為包名备韧,依項(xiàng)目不同而變。

4.增加測(cè)試類(lèi)

public class TestCall {

public ServiceLoader<ICall> serviceloader = ServiceLoader.load(ICall.class);

public static void main(String[] args) {

??? TestCall testCall = new TestCall();

??? ICall icall = testCall.getCall();

??? System.out.println(icall.call());

}

public ICall getCall() {

??? ICall last = null;

??? for (ICall call : serviceloader) {

????? last = call;

? ? }

? ?? return last;

}

執(zhí)行文件輸出“汪汪汪”痪枫。

好了到此织堂,基礎(chǔ)的java spi項(xiàng)目已經(jīng)實(shí)現(xiàn),之后會(huì)對(duì)dubbo SPI 與java spi做比較奶陈。

謝謝收看易阳,下期見(jiàn)!3粤!潦俺!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市声搁,隨后出現(xiàn)的幾起案子黑竞,更是在濱河造成了極大的恐慌,老刑警劉巖疏旨,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件很魂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡檐涝,警方通過(guò)查閱死者的電腦和手機(jī)遏匆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)法挨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幅聘,你說(shuō)我怎么就攤上這事凡纳。” “怎么了帝蒿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵荐糜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我葛超,道長(zhǎng)暴氏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任绣张,我火速辦了婚禮答渔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侥涵。我一直安慰自己沼撕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布芜飘。 她就那樣靜靜地躺著务豺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪燃箭。 梳的紋絲不亂的頭發(fā)上冲呢,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音招狸,去河邊找鬼敬拓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裙戏,可吹牛的內(nèi)容都是我干的乘凸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼累榜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼营勤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起壹罚,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤葛作,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后猖凛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赂蠢,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年辨泳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虱岂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玖院。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖第岖,靈堂內(nèi)的尸體忽然破棺而出难菌,到底是詐尸還是另有隱情,我是刑警寧澤蔑滓,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布郊酒,位于F島的核電站,受9級(jí)特大地震影響烫饼,放射性物質(zhì)發(fā)生泄漏猎塞。R本人自食惡果不足惜试读,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一杠纵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钩骇,春花似錦比藻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至纽匙,卻和暖如春务蝠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烛缔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工馏段, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人践瓷。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓院喜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晕翠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喷舀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354