在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SPI是什么?Java SPI的使用介紹

OSC開源社區 ? 來源:OSCHINA 社區 ? 2023-09-02 09:58 ? 次閱讀

SPI 是什么

SPI 全稱 Service Provider Interface,是 Java 提供的一套用來被第三方實現或者擴展的 API,它可以用來啟用框架擴展和替換組件。

整體機制如下圖

507ef174-48b5-11ee-97a6-92fbcf53809c.png

Java SPI 實際上是 “基于接口編程+策略模式+配置文件” 組合實現的動態加載機制。

使用場景

適用于:調用者根據實際使用需要,啟用、擴展、或者替換框架的實現策略

比較常見的例子:

數據庫驅動加載接口實現類的加載,JDBC 加載不同類型數據庫的驅動

日志門面接口實現類加載,SLF4J 加載不同提供商的日志實現類

Spring 中大量使用了 SPI, 比如:對 servlet3.0 規范對 ServletContainerInitializer 的實現、自動類型轉換 Type Conversion SPI (Converter SPI、Formatter SPI) 等

Dubbo 中也大量使用 SPI 的方式實現框架的擴展,不過它對 Java 提供的原生 SPI 做了封裝,允許用戶擴展實現 Filter 接口

使用介紹

要使用 Java SPI,需要遵循如下約定:

當服務提供者提供了接口的一種具體實現后,在 jar 包的 META-INF/services 目錄下創建一個以 “接口全限定名” 為命名的文件,內容為實現類的全限定名;

接口實現類所在的 jar 包放在主程序的 classpath 中;

主程序通過 java.util.ServiceLoder 動態裝載實現模塊,它通過掃描 META-INF/services 目錄下的配置文件找到實現類的全限定名,把類加載到 JVM;

SPI 的實現類必須攜帶一個不帶參數的構造方法;

總結

優點:使用 Java SPI 機制的優勢是實現解耦,使得第三方服務模塊的裝配控制的邏輯與調用者的業務代碼分離,而不是耦合在一起。應用程序可以根據實際業務情況啟用框架擴展或替換框架組件。

缺點:

雖然 ServiceLoader 也算是使用的延遲加載,但是基本只能通過遍歷全部獲取,也就是接口的實現類全部加載并實例化一遍。如果你并不想用某些實現類,它也被加載并實例化了,這就造成了浪費。獲取某個實現類的方式不夠靈活,只能通過 Iterator 形式獲取,不能根據某個參數來獲取對應的實現類。

多個并發多線程使用 ServiceLoader 類的實例是不安全的。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    52

    文章

    8236

    瀏覽量

    146364
  • SPI接口
    +關注

    關注

    0

    文章

    258

    瀏覽量

    34382
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20095
  • JVM
    JVM
    +關注

    關注

    0

    文章

    158

    瀏覽量

    12226
  • 解耦控制
    +關注

    關注

    0

    文章

    29

    瀏覽量

    10215

原文標題:淺析 Java - SPI 機制

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SPI接口總線介紹

    SPI接口總線介紹 SPI 可以作為主、從器件工作,并可在同一總線上支持多個主、從器件。SPI 主要使用3 個信號。(1)主輸出、從
    發表于 11-24 08:41 ?4848次閱讀
    <b class='flag-5'>SPI</b>接口總線<b class='flag-5'>介紹</b>

    SPI總線簡介與參考實例

    spi協議介紹,通過文檔形式說明spi總線時序
    發表于 11-19 15:12 ?55次下載

    SPI總線協議介紹

    這是SPI協議的介紹,很有用的哦,歡迎大家下載。
    發表于 04-13 14:21 ?17次下載

    SPI接口的應用與基于FPGA的SPI自動發送模塊設計

    SPI 接口應用十分廣泛,在很多情況下,人們會用軟件模擬的方法來產生SPI 時序或是采用帶SPI 功能模塊的MCU。但隨著可編程邏輯技術的發展,人們往往需要自己設計簡單的SPI 發送模
    發表于 10-19 10:33 ?19次下載
    <b class='flag-5'>SPI</b>接口的應用與基于FPGA的<b class='flag-5'>SPI</b>自動發送模塊設計

    spi從機程序設計_spi從機程序代碼詳細介紹

    本文介紹STM32F407的SPI主從機通信程序和基于計數器的spi從機程序這兩種spi從機程序
    發表于 12-29 15:05 ?3.5w次閱讀
     <b class='flag-5'>spi</b>從機程序設計_<b class='flag-5'>spi</b>從機程序代碼詳細<b class='flag-5'>介紹</b>

    英創信息技術JAVA操作英創主板SPI接口簡介

    資源,英創提供了Java硬件支持包,主要支持的工控接口有:以太網、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java語言調用英創
    的頭像 發表于 02-06 11:09 ?1927次閱讀
    英創信息技術<b class='flag-5'>JAVA</b>操作英創主板<b class='flag-5'>SPI</b>接口簡介

    fireflyAIO-3288J主板SPI使用介紹

    SPI是一種高速的,全雙工,同步串行通信接口,用于連接微控制器、傳感器、存儲設備等,本文以指紋識別模塊為例簡單介紹SPI使用。 SPI工作方式
    的頭像 發表于 12-20 09:41 ?1186次閱讀
    fireflyAIO-3288J主板<b class='flag-5'>SPI</b>使用<b class='flag-5'>介紹</b>

    STM32的SPI接口、cubeMX軟件配置SPI接口和分析SPI相關代碼

    本文主要介紹STM32的SPI接口、cubeMX軟件配置SPI接口和分析SPI相關代碼。 STM32之SPI簡介:
    的頭像 發表于 09-24 14:09 ?1.6w次閱讀
    STM32的<b class='flag-5'>SPI</b>接口、cubeMX軟件配置<b class='flag-5'>SPI</b>接口和分析<b class='flag-5'>SPI</b>相關代碼

    spi協議介紹

    文章目錄前言一、SPI介紹1.SPI總線2.尋址方式二、通信原理1.通信過程2.極性和相位3.四種工作模式三、SPI與I2C的異同1.相同點2.不同點總結前言
    發表于 12-22 19:21 ?19次下載
    <b class='flag-5'>spi</b>協議<b class='flag-5'>介紹</b>

    源碼級深度理解Java SPI

    SPI 配置:Java SPI 機制約定的配置文件,提供查找服務實現類的邏輯。配置文件必須置于 META-INF/services 目錄中,并且,文件名應與服務提供者接口的完全限定名保持一致。文件中的每一行都有一個實現服務類的詳
    的頭像 發表于 11-15 11:38 ?667次閱讀

    Java、Spring、Dubbo三者SPI機制的原理和區別

    其實我之前寫過一篇類似的文章,但是這篇文章主要是剖析dubbo的SPI機制的源碼,中間只是簡單地介紹了一下Java、Spring的SPI機制,并沒有進行深入,所以本篇就來深入聊一聊這三
    的頭像 發表于 06-05 15:21 ?1039次閱讀
    <b class='flag-5'>Java</b>、Spring、Dubbo三者<b class='flag-5'>SPI</b>機制的原理和區別

    SPI通用接口層介紹

    SPI 通用接口層 SPI 通用接口層把具體的 SPI 設備的協議驅動和 SPI 控制器驅動連接在一起。 負責 SPI 系統與 Linux
    的頭像 發表于 07-25 10:52 ?760次閱讀

    什么是SPI機制

    1、前言 在之前的 JVM 分析系列之類加載 提到過 Java SPI 機制,主要是類加載器反雙親委派的實現(第三方包不在指定jdk路徑,一般類加載器無法加載,需要特殊
    的頭像 發表于 10-08 15:03 ?1150次閱讀
    什么是<b class='flag-5'>SPI</b>機制

    SPI接口介紹

    電子發燒友網站提供《SPI接口介紹.pdf》資料免費下載
    發表于 10-13 10:49 ?0次下載
    <b class='flag-5'>SPI</b>接口<b class='flag-5'>介紹</b>

    SPI接口的相關介紹

    SPI和IIC接口一樣是非常常見的開發板接口,但與IIC相比,SPI設計了一種二進制流的交互方式,擁有更快的傳輸速度,它可以在任何兩個嵌入式設備之間交換消息,ELF1開發板也是通過SPI接口連接了六
    的頭像 發表于 12-06 15:49 ?1316次閱讀
    <b class='flag-5'>SPI</b>接口的相關<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 欧美三级在线观看视频| 亚洲淫视频| 亚洲男人的天堂在线播放| 一区二区亚洲视频| 99在线热播精品免费| 欧美一级特黄aa大片| 午夜精品久久久久久影视riav | 天天插天天干| 国产精品1区2区3区| 一区| 一级做a爰片久久毛片毛片| 免费人成在观看| 手机国产看片| www.99热.com| 国产在线美女| 天天操天天曰| 狠狠干成人| 花怜write. as| 在线观看黄网| 色老头免费视频| 国产精品亚洲四区在线观看| 国产精品资源在线观看网站| 亚洲阿v天堂2018在线观看| 国产91丝袜在线播放九色| 久久午夜网| 嗯!啊!使劲用力在线观看| 天天综合色一区二区三区| 永久手机看片福利盒子| 国产重口老太和小伙乱视频| 久久精品人人爽人人爽快| 久久精品国产6699国产精| 天天操天天干天天拍| gay超刺激污文| 高清欧美一级在线观看| 一区二区三区高清不卡 | 九九99久久精品午夜剧场免费 | 国产在线播放成人免费| 狠狠婷婷| 222aaa免费| 色多多视频在线播放| luxu259在线中文字幕|