JAVA SPI特性及簡(jiǎn)單應(yīng)用代碼實(shí)例
最近在研究dubbo時(shí),發(fā)現(xiàn)了JAVA的SPI特性。SPI的全名為Service Provider Interface,是JDK內(nèi)置的一種服務(wù)發(fā)現(xiàn)機(jī)制。
具體實(shí)現(xiàn):
1、定義一個(gè)接口
public interface IShape {
/**
* 渲染
*/
void render();
}
2、添加幾種實(shí)現(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、測(cè)試
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、實(shí)際應(yīng)用,sum為各大數(shù)據(jù)廠商提供了java.sql.Driver接口,每個(gè)廠商提供自己的實(shí)現(xiàn)。


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

