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.SquareShapecom.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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. jsp實(shí)現(xiàn)局部刷新頁面、異步加載頁面的方法2. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))3. ASP中Server.HTMLEncode用法(附自定義函數(shù))4. ASP和PHP文件操作速度的對(duì)比5. Spring依賴注入的三種方式實(shí)例詳解6. adodb.recordset.open(rs.open)方法參數(shù)詳解7. JavaServlet的文件上傳和下載實(shí)現(xiàn)方法8. 怎樣打開XML文件?xml文件如何打開?9. jsp實(shí)現(xiàn)簡(jiǎn)單用戶7天內(nèi)免登錄10. asp文件如何打開
