淺談Java的SPI技術(shù)
人狠話不多,先上截圖和代碼吧。
這是工程目錄??吹絩esources目錄下面沒有,添加了META-INF和services目錄。
添加了一個com.gys.test.IAnimal文件。這個文件名和上面的接口名完全對應(yīng)。這個目錄的文件名是有講究的,按照SPI規(guī)范來的。
上代碼:
package com.gys.test; public interface IAnimal { void eat(); }
package com.gys.test.impl; import com.gys.test.IAnimal; public class Bird implements IAnimal { @Override public void eat() { System.out.println("小鳥吃蟲子"); } }
package com.gys.test.impl; import com.gys.test.IAnimal; public class Dog implements IAnimal { @Override public void eat() { //System.out.println("小狗吃屎"); System.out.println("小狗吃骨頭"); } }
package com.gys.test; import java.util.ServiceLoader; public class MainTest { public static void main(String[] args) { ServiceLoader<IAnimal> animals=ServiceLoader.load(IAnimal.class); for (IAnimal animal:animals){ animal.eat(); } } }
源碼一角說明META-INF/service:
ServiceLoader.load(clsss)就是去ClassPath的MEAT-INF的service下去尋找指定文件;這里的classPath包括外部引入的jar包中的classPath.
如果我們引入了第三方的jar包,如果jar中的META-INF/service有com.gys.test.IAnimal文件,也會被讀取,并且實例化里面的類。
SPI使用場景:
自己提供接口讓別人提供實現(xiàn)的方式;典型的如JDBC模式。
以上就是淺談Java的SPI技術(shù)的詳細內(nèi)容,更多關(guān)于JAVA SPI技術(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
- Java和Dubbo的SPI機制原理解析
- Java 自旋鎖(spinlock)相關(guān)知識總結(jié)
- 深入理解Java中的SPI機制
- Java中SPI的一些理解
- 在java中使用SPI創(chuàng)建可擴展的應(yīng)用程序操作
- java中spi使用詳解
- Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)
- Java 添加、刪除、格式化Word中的圖片步驟詳解( 基于Spire.Cloud.SDK for Java )
- Java 基于Spire.Cloud.SDK for Java在PDF中繪制形狀
- 詳解java實踐SPI機制及淺析源碼
- Java SPI的簡單小實例
- Java SPI機制原理及代碼實例
- 詳解JAVA SPI機制和使用方法
- Java基于Spire Cloud Excel把Excel轉(zhuǎn)換成PDF
- JAVA SPI特性及簡單應(yīng)用代碼實例
- 深入學(xué)習(xí)Java中的SPI機制
- Java進階之SPI機制詳解
相關(guān)文章
解決SpringBoot整合MybatisPlus分模塊管理遇到的bug
這篇文章主要介紹了解決SpringBoot整合MybatisPlus分模塊管理遇到的bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07Struts1教程之ActionMapping_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Struts1教程之ActionMapping,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09Java8新特性之泛型的目標類型推斷_動力節(jié)點Java學(xué)院整理
泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。下面通過本文給分享Java8新特性之泛型的目標類型推斷,感興趣的朋友參考下吧2017-06-06