最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java的SPI技術(shù)

 更新時(shí)間:2020年07月18日 15:47:57   作者:思思博士  
這篇文章主要介紹了Java的SPI技術(shù)的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

人狠話不多,先上截圖和代碼吧。

這是工程目錄??吹絩esources目錄下面沒有,添加了META-INF和services目錄。

添加了一個(gè)com.gys.test.IAnimal文件。這個(gè)文件名和上面的接口名完全對(duì)應(yīng)。這個(gè)目錄的文件名是有講究的,按照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文件,也會(huì)被讀取,并且實(shí)例化里面的類。

SPI使用場景:

自己提供接口讓別人提供實(shí)現(xiàn)的方式;典型的如JDBC模式。

以上就是淺談Java的SPI技術(shù)的詳細(xì)內(nèi)容,更多關(guān)于JAVA SPI技術(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring?Lifecycle的使用小結(jié)

    Spring?Lifecycle的使用小結(jié)

    這篇文章主要介紹了Spring?Lifecycle的使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • SpringBoot深入分析講解監(jiān)聽器模式下

    SpringBoot深入分析講解監(jiān)聽器模式下

    監(jiān)聽器模式,大家應(yīng)該并不陌生,主要的組成要素包括了事件、監(jiān)聽器以及廣播器;當(dāng)事件發(fā)生時(shí),廣播器負(fù)責(zé)將事件傳遞給所有已知的監(jiān)聽器,而監(jiān)聽器會(huì)對(duì)自己感興趣的事件進(jìn)行處理
    2022-07-07
  • Mac OS上安裝Tomcat服務(wù)器的簡單步驟

    Mac OS上安裝Tomcat服務(wù)器的簡單步驟

    這篇文章主要介紹了Mac OS上安裝Tomcat服務(wù)器的簡單步驟,包括簡單的啟動(dòng)命令和查看Tomcat信息的方法,需要的朋友可以參考下
    2015-11-11
  • 使用java反射將結(jié)果集封裝成為對(duì)象和對(duì)象集合操作

    使用java反射將結(jié)果集封裝成為對(duì)象和對(duì)象集合操作

    這篇文章主要介紹了使用java反射將結(jié)果集封裝成為對(duì)象和對(duì)象集合操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中常見的陷阱題及答案

    Java中常見的陷阱題及答案

    在電腦里找到一份當(dāng)時(shí)學(xué)習(xí)JAVA時(shí)的筆記,看到一些現(xiàn)在已經(jīng)遺忘的細(xì)節(jié)。稍微整理了幾個(gè),發(fā)出來與大家分享。這篇文章主要介紹了Java中常見的陷阱題及答案,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 一文帶你看懂Java8中的lambda表達(dá)式和方法引用

    一文帶你看懂Java8中的lambda表達(dá)式和方法引用

    Lambda 表達(dá)式是 Java 8 引入的一項(xiàng)重要特性,它提供了一種簡潔、清晰且靈活的語法來表示可傳遞的匿名函數(shù),下面就跟隨小編一起學(xué)習(xí)一下Java8中的lambda表達(dá)式和方法引用的相關(guān)知識(shí)吧
    2023-12-12
  • Java實(shí)現(xiàn)簡單局域網(wǎng)聊天室

    Java實(shí)現(xiàn)簡單局域網(wǎng)聊天室

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Spring操作JdbcTemplate數(shù)據(jù)庫的方法學(xué)習(xí)

    Spring操作JdbcTemplate數(shù)據(jù)庫的方法學(xué)習(xí)

    這篇文章主要為大家介紹了Spring操作JdbcTemplate數(shù)據(jù)庫方法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐

    Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐

    本文主要介紹了Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • IDEA使用JDK21控制臺(tái)亂碼問題及解決

    IDEA使用JDK21控制臺(tái)亂碼問題及解決

    在使用IntelliJ IDEA開發(fā)時(shí),經(jīng)常會(huì)遇到因編碼不一致導(dǎo)致的中文亂碼問題,特別是在JDK18以后的版本中,由于JDK內(nèi)部默認(rèn)編碼格式變?yōu)镚BK,而項(xiàng)目設(shè)置為UTF-8后,會(huì)導(dǎo)致亂碼問題,本文介紹了幾個(gè)步驟來解決這一問題
    2024-10-10

最新評(píng)論

静宁县| 东安县| 阜宁县| 临江市| 西青区| 岳池县| 邹城市| 肥乡县| 神木县| 达拉特旗| 永和县| 通道| 农安县| 乌苏市| 乌海市| 高碑店市| 洮南市| 夏津县| 正镶白旗| 湖州市| 望奎县| 桐乡市| 工布江达县| 灌阳县| 淄博市| 青田县| 青铜峡市| 乌拉特后旗| 黄骅市| 安新县| 富锦市| 伊吾县| 旌德县| 合作市| 永川市| 合作市| 江源县| 两当县| 芷江| 浦县| 瓮安县|