色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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 類的實例是不安全的。






審核編輯:劉清

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

    關注

    54

    文章

    8619

    瀏覽量

    149034
  • SPI接口
    +關注

    關注

    0

    文章

    262

    瀏覽量

    35258
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20512
  • JVM
    JVM
    +關注

    關注

    0

    文章

    160

    瀏覽量

    12516
  • 解耦控制
    +關注

    關注

    0

    文章

    29

    瀏覽量

    10316

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

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

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    JavaSPI機制詳解

    作者:京東物流 楊葦葦 1.SPI簡介 SPI(Service Provicer Interface)是Java語言提供的一種接口發現機制,用來實現接口和接口實現的解耦。簡單來說,就是系統只需要定義
    的頭像 發表于 03-05 11:35 ?669次閱讀
    <b class='flag-5'>Java</b>的<b class='flag-5'>SPI</b>機制詳解

    JAVA操作英創主板SPI接口簡介

    訪問硬件資源,英創提供了Java硬件支持包,主要支持的工控接口有:以太網、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java語言調用英創
    發表于 10-20 13:16

    SPI接口總線介紹

    SPI接口總線介紹 SPI 可以作為主、從器件工作,并可在同一總線上支持多個主、從器件。SPI 主要使用3 個信號。(1)主輸出、從
    發表于 11-24 08:41 ?4966次閱讀
    <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 ?2168次閱讀
    英創信息技術<b class='flag-5'>JAVA</b>操作英創主板<b class='flag-5'>SPI</b>接口簡介

    fireflyAIO-3288J主板SPI使用介紹

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

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

    其實我之前寫過一篇類似的文章,但是這篇文章主要是剖析dubbo的SPI機制的源碼,中間只是簡單地介紹了一下Java、Spring的SPI機制,并沒有進行深入,所以本篇就來深入聊一聊這三
    的頭像 發表于 06-05 15:21 ?1299次閱讀
    <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 ?990次閱讀

    什么是SPI機制

    1、前言 在之前的 JVM 分析系列之類加載 提到過 Java SPI 機制,主要是類加載器反雙親委派的實現(第三方包不在指定jdk路徑,一般類加載器無法加載,需要特殊
    的頭像 發表于 10-08 15:03 ?1479次閱讀
    什么是<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>
    主站蜘蛛池模板: 久久精品国产亚洲AV久五月天 | 亚欧免费观看在线观看更新 | 国产亚洲精品精华液 | 国产精品成人影院在线观看 | xx69欧美| 和I儿媳妇激情 | 国产精品.XX视频.XXTV | 高清午夜福利电影在线 | 99久久国产露脸精品国产吴梦梦 | 91精品国产品国语在线不卡 | 99国产精品白浆在线观看免费 | 日韩精品免费在线观看 | 国模孕妇模特季玥之粉红 | 裸妇厨房风流在线观看 | 蜜臀AV99无码精品国产专区 | 久9青青cao精品视频在线 | 久久66热在线视频精品 | 2019午夜75福利不卡片在线 | 一区二区不卡在线视频 | 91青青草原 | ava云直播| 和I儿媳妇激情 | 成人在线视频播放 | 韩国免费啪啪漫画无遮拦健身教练 | 大迪克黑人异族 | 免费看大黄高清网站视频在线 | 国精产品一区二区三区有限公司 | 99婷婷久久精品国产一区二区 | 成人性生交大片免费看金瓶七仙女 | 成人国产在线观看 | 国产成人在线播放视频 | 亚洲精品国产AV成人毛片 | 亚洲中文字幕永久在线 | 欧美亚洲国产免费高清视频 | 性欧美video 性欧美sexovideotv | 国产老头与老太hd | 久久九九精品国产自在现线拍 | 国产精品青草久久福利不卡 | 亚洲一级毛片免费在线观看 | 一级做a爰片久久毛片一 | 巨爆乳中文字幕爆乳区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品