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

 

posted on 2022-09-01 19:35  life_start  阅读(33)  评论(0)    收藏  举报