欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java的SPI技術(shù)

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

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

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

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

SPI使用場景:

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

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

相關(guān)文章

  • Java終止循環(huán)體的具體實現(xiàn)

    Java終止循環(huán)體的具體實現(xiàn)

    這篇文章主要介紹了Java終止循環(huán)體的具體實現(xiàn),需要的朋友可以參考下
    2014-02-02
  • Java編程一道多線程問題實例代碼

    Java編程一道多線程問題實例代碼

    這篇文章主要介紹了Java編程一道多線程問題實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Springboot的yml配置文件用法

    Springboot的yml配置文件用法

    這篇文章主要介紹了Springboot的yml配置文件用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決SpringBoot整合MybatisPlus分模塊管理遇到的bug

    解決SpringBoot整合MybatisPlus分模塊管理遇到的bug

    這篇文章主要介紹了解決SpringBoot整合MybatisPlus分模塊管理遇到的bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Struts1教程之ActionMapping_動力節(jié)點Java學(xué)院整理

    Struts1教程之ActionMapping_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Struts1教程之ActionMapping,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • java_object的簡單使用詳解

    java_object的簡單使用詳解

    下面小編就為大家?guī)硪黄猨ava_object的簡單使用詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Maven下載依賴的順序及配置文件小結(jié)

    Maven下載依賴的順序及配置文件小結(jié)

    本文主要介紹了Maven下載依賴的順序及配置文件小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • JAVA調(diào)用JavaScript方法代碼示例

    JAVA調(diào)用JavaScript方法代碼示例

    之前在一次機緣巧合的情況下,需要時用JAVA執(zhí)行js方法,查閱了一些文檔,找到了相關(guān)解決方法,這里和大家分享一下,這篇文章主要給大家介紹了關(guān)于JAVA調(diào)用JavaScript方法的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • 深入理解Java設(shè)計模式之訪問者模式

    深入理解Java設(shè)計模式之訪問者模式

    這篇文章主要介紹了JAVA設(shè)計模式之訪問者模式的的相關(guān)資料,文中示例代碼非常詳細,供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • Java8新特性之泛型的目標類型推斷_動力節(jié)點Java學(xué)院整理

    Java8新特性之泛型的目標類型推斷_動力節(jié)點Java學(xué)院整理

    泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。下面通過本文給分享Java8新特性之泛型的目標類型推斷,感興趣的朋友參考下吧
    2017-06-06

最新評論