java spi

作者: justlinzhihe | 来源:发表于2018-03-01 14:17 被阅读0次

    SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。
    具体是在JAR包的"src/META-INF/services/"目录下建立一个文件,文件名是接口的全限定名,文件的内容可以有多行,每行都是该接口对应的具体实现类的全限定名.

    demo实现

    package spi;
    
    /**
     * @author linzh
     * @date 2018-03-01 10:10
     */
    public interface Animal {
        void voice();
    }
    
    
    package spi;
    
    /**
     * @author linzh
     * @date 2018-03-01 10:11
     */
    public class Cat implements Animal {
        @Override
        public void voice() {
            System.out.println("喵喵~~");
        }
    }
    
    package spi;
    
    /**
     * @author linzh
     * @date 2018-03-01 10:10
     */
    public class Dog implements Animal {
        @Override
        public void voice() {
            System.out.println("汪汪~~");
        }
    }
    

    META-INF\services\spi.Animal

    spi.Cat
    spi.Dog
    
    package spi;
    
    import java.util.ServiceLoader;
    
    /**
     * @author linzh
     * @date 2018-03-01 10:11
     */
    public class Main {
        public static void main(String[] args) {
            ServiceLoader<Animal> loaders = ServiceLoader.load(Animal.class);
            for (Animal d : loaders) {
                d.voice();
            }
        }
    }
    
    
    控制台输出

    相关文章

      网友评论

          本文标题:java spi

          本文链接:https://www.haomeiwen.com/subject/dmcgxftx.html