SPI
SPI全称为 (Service Provider Interface),是JDK内置的一种服务提供发现机制。SPI是一种服务动态发现机制,一种非常优秀的解耦思想。
示例:
比如说要制造一种动物叫声的系统,系统分为三个部分,一个动物叫声的接口Animal,一个是动物叫声的实现,还有一个是调用动物叫声。
1、定义接口
package org.example.spi; public interface Animal { String say(); }
2、接口实现
package org.example.spi; public class Cat implements Animal { @Override public String say() { return "I am cat"; } }
package org.example.spi; public class Dog implements Animal{ @Override public String say() { return "I am dog"; } }
resources目录下新建META-INF/services目录,并且在这个目录下新建一个与上述接口的全限定名一致的文件,在这个文件中写入接口的实现类的全限定名:

3、测试服务发现
package org.example.spi; import java.util.ServiceLoader; public class TestSpi { public static void main(String[] args) { ServiceLoader<Animal> load = ServiceLoader.load(Animal.class); for (Animal animal : load) { System.out.println(animal.say()); } } }
Spring源码之SpringFactoriesLoader
https://blog.csdn.net/qq_27347991/article/details/106528319
本文来自博客园,作者:life_start,转载请注明原文链接:https://www.cnblogs.com/yangh2016/articles/16640126.html
浙公网安备 33010602011771号