spi機制

SPI (Service Provider Interface) 是一種服務發現機制。它通過在ClassPath路徑下的META-INF/services文件夾查找文件,自動加載文件裏所定義的類。

在這裏插入圖片描述

package com.michael.service;
public interface GoodsService {
	void print();
}
package com.michael.service.impl;
import com.michael.service.GoodsService;
public class GoodsServiceImplA implements GoodsService {
	@Override
	public void print() {
		System.out.println("GoodsServiceImplA");
	}
}
package com.michael.service.impl;
import com.michael.service.GoodsService;
public class GoodsServiceImplB implements GoodsService {
	@Override
	public void print() {
		System.out.println("GoodsServiceImplB");
	}
}

在classpath下創建META-INF/services/com.michael.service.GoodsService文件添加如下內容:

com.michael.service.impl.GoodsServiceImplA
com.michael.service.impl.GoodsServiceImplB
package com.michael;
import java.util.Iterator;
import java.util.ServiceLoader;
import com.michael.service.GoodsService;
public class App {
	public static void main(String[] args) {
		ServiceLoader<GoodsService> load = ServiceLoader.load(GoodsService.class);
		Iterator<GoodsService> iterator = load.iterator();
		while (iterator.hasNext()) {
			GoodsService next = iterator.next();
			next.print();
		}
	}
}

運行結果:

GoodsServiceImplA
GoodsServiceImplB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章