2020-03-25-Java ServiceLoader(轉(zhuǎn)).md


layout: post
title: Java安全模型(AccessController)(轉(zhuǎn))
categories: [Java]
description: Java安全模型(AccessController)
keywords: Java, AccessController


轉(zhuǎn)載自 ServiceLoader詳解

定義

A simple service-provider loading facility.

A service is a well-known set of interfaces and (usually abstract) classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the interfaces and subclass the classes defined in the service itself. Service providers can be installed in an implementation of the Java platform in the form of extensions, that is, jar files placed into any of the usual extension directories. Providers can also be made available by adding them to the application's class path or by some other platform-specific means.

通俗講租幕,ServiceLoader 也像 ClassLoader 一樣,能裝載類文件,但是使用時(shí)有區(qū)別豌鸡,具體區(qū)別如下:

  1. ServiceLoader裝載的是一系列有某種共同特征的實(shí)現(xiàn)類慢宗,而ClassLoader是個(gè)萬能加載器锈至;
  2. ServiceLoader裝載時(shí)需要特殊的配置众雷,使用時(shí)也與ClassLoader有所區(qū)別稚晚;
  3. ServiceLoader還實(shí)現(xiàn)了Iterator接口姻采。

示例

下面是關(guān)于ServiceLoader的簡(jiǎn)單的例子雅采,僅供參考

  1. 基礎(chǔ)服務(wù):IService
package com.service;

public interface IService {
    String sayHello();
    String getScheme();
}
  1. 具體服務(wù)實(shí)現(xiàn)1:HDFSService
package com.impl;

import com.service.IService;

public class HDFSService implements IService {
    @Override
    public String sayHello() {
    return "Hello HDFSService";
  }
  
  @Override
  public String getScheme() {
    return "hdfs";
  }
}
  1. 具體服務(wù)實(shí)現(xiàn)2:LocalService
package com.impl;

import com.service.IService;

public class LocalService implements IService {

    @Override  
    public String sayHello() {
    return "Hello LocalService";
  }  
  @Override 
  public String getScheme() {
    return "local";  
  }
}
  1. 配置:META-INF/services/com.service.IService
com.impl.HDFSServicecom.impl.LocalService
  1. 測(cè)試類
package com.test;

import java.util.ServiceLoader;
import com.service.IService;

public class Test {

    public static void main(String[] args) {
    ServiceLoader serviceLoader = ServiceLoader.load(IService.class);
    for(IService service : serviceLoader) {
        System.out.println(service.getScheme()+"="+service.sayHello());
    }  
  }
}
  1. 結(jié)果:
hdfs=Hello HDFSService
local=Hello LocalService

可以看到 ServiceLoader 可以根據(jù) IService 把定義的兩個(gè)實(shí)現(xiàn)類找出來,返回一個(gè) ServiceLoader 的實(shí)現(xiàn)慨亲,而 ServiceLoader 實(shí)現(xiàn)了 Iterable 接口婚瓜,所以可以通過 ServiceLoader 來遍歷所有在配置文件中定義的類的實(shí)例。

應(yīng)用

參考 Mybaits源碼解讀 驅(qū)動(dòng)加載部分

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刑棵,一起剝皮案震驚了整個(gè)濱河市巴刻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛉签,老刑警劉巖冈涧,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異正蛙,居然都是意外死亡督弓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門乒验,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愚隧,“玉大人,你說我怎么就攤上這事】裉粒” “怎么了录煤?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荞胡。 經(jīng)常有香客問我妈踊,道長,這世上最難降的妖魔是什么泪漂? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任廊营,我火速辦了婚禮,結(jié)果婚禮上萝勤,老公的妹妹穿的比我還像新娘露筒。我一直安慰自己,他們只是感情好敌卓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布慎式。 她就那樣靜靜地躺著,像睡著了一般趟径。 火紅的嫁衣襯著肌膚如雪瘪吏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天蜗巧,我揣著相機(jī)與錄音肪虎,去河邊找鬼。 笑死惧蛹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刑枝。 我是一名探鬼主播香嗓,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼装畅!你這毒婦竟也來了靠娱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤掠兄,失蹤者是張志新(化名)和其女友劉穎像云,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚂夕,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迅诬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了婿牍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侈贷。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖等脂,靈堂內(nèi)的尸體忽然破棺而出俏蛮,到底是詐尸還是另有隱情撑蚌,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布搏屑,位于F島的核電站争涌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辣恋。R本人自食惡果不足惜亮垫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抑党。 院中可真熱鬧包警,春花似錦、人聲如沸底靠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暑中。三九已至壹瘟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳄逾,已是汗流浹背稻轨。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雕凹,地道東北人殴俱。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像枚抵,于是被迫代替她去往敵國和親线欲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,696評(píng)論 0 3
  • ClassLoader翻譯過來就是類加載器汽摹,普通的java開發(fā)者其實(shí)用到的不多李丰,但對(duì)于某些框架開發(fā)者來說卻非常常見...
    時(shí)待吾閱讀 1,073評(píng)論 0 1
  • 衡量一個(gè)人美不美,從來不是看誰長得漂亮逼泣,誰的職業(yè)更穩(wěn)定趴泌,誰的家底更富裕,而是看誰的心態(tài)更好拉庶。 好的心態(tài)是一面鏡子嗜憔,...
    玲子玲瓏閱讀 366評(píng)論 0 1
  • 首先I/O流在任何一門靜態(tài)語言中他們都占有舉足輕重的地方。我們先來了解一下三個(gè)的基本概念氏仗。 關(guān)于這個(gè)層次結(jié)構(gòu)你可能...
    鐵甲萬能狗閱讀 639評(píng)論 0 2
  • 第二章 在火車上我換好了巫師的袍子,我拿起魔杖細(xì)細(xì)的端詳帚稠,是一根細(xì)細(xì)的又很結(jié)實(shí)的褐色木頭谣旁,七又半英寸長,龍...
    夜以繼閱讀 240評(píng)論 0 0