JAVA SPI特性及簡單應(yīng)用代碼實例
最近在研究dubbo時,發(fā)現(xiàn)了JAVA的SPI特性。SPI的全名為Service Provider Interface,是JDK內(nèi)置的一種服務(wù)發(fā)現(xiàn)機(jī)制。
具體實現(xiàn):
1、定義一個接口
public interface IShape {
/**
* 渲染
*/
void render();
}
2、添加幾種實現(xiàn)
public class CircularShape implements IShape {
@Override
public void render() {
System.out.println(this.getClass().getName() + "正在繪制圓形");
}
}
public class SquareShape implements IShape {
@Override
public void render() {
System.out.println(this.getClass().getName() + "正在繪制正方形");
}
}
3、在META-INF/services/com.zhi.demo.IShape文件添加信息
com.zhi.demo.impl.SquareShape
com.zhi.demo.impl.CircularShape
4、測試
public class SpiTest {
public static void main(String[] args) {
ServiceLoader<IShape> loaders = ServiceLoader.load(IShape.class);
for (IShape shape : loaders) {
shape.render();
}
}
}
5、運(yùn)行結(jié)果
com.zhi.demo.impl.SquareShape正在繪制正方形
com.zhi.demo.impl.CircularShape正在繪制圓形
代碼結(jié)構(gòu)圖如下

6、實際應(yīng)用,sum為各大數(shù)據(jù)廠商提供了java.sql.Driver接口,每個廠商提供自己的實現(xiàn)。


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Java創(chuàng)建線程的2種方式以及對比
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對比的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01
詳解 maven的pom.xml用<exclusion>解決版本問題
這篇文章主要介紹了詳解 maven的pom.xml用<exclusion>解決版本問題的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
Java實戰(zhàn)玩具商城的前臺與后臺實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+JSP+SSM+Springboot+Jsp+maven+Mysql實現(xiàn)一個玩具商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2022-01-01

