SPI

2022/3/24 java
  1. 新建一个模块MySpi用于存储spi接口

    package com.meinil.spi;
    
    public interface MySpi {
        public void print();
    }
    
  2. 新建模块MySpiImpl实现spi接口

    package com.meinil.myspi;
    
    public class MySpiImpl implements MySpi {
        @Override
        public void print() {
            System.out.println("My spi 机制");
        }
    }
    

    resources目录下新建META-INF/services/目录,目录下新建com.meinil.spi.MySpi文件,文件名为spi接口的全类名,内容为实现类的全路径名

    com.meinil.myspi.MySpiImpl
    
  3. 新建模块YouSpiImpl实现spi接口

    package com.meinil.youspi;
    
    public class YouSpiImpl implements MySpi {
        @Override
        public void print() {
            System.out.println("You spi 机制");
        }
    }
    

    resources目录下新建META-INF/services/目录,目录下新建com.meinil.spi.MySpi文件,文件名为spi接口的全类名,内容为实现类的全路径名

    com.meinil.youspi.YouSpiImpl
    
  4. 新建测试模块TestDemo,导入上述的三个模块

    public class MainApplication {
        public static void main(String[] args) {
            ServiceLoader<MySpi> load = ServiceLoader.load(MySpi.class);
            Iterator<MySpi> iterator = load.iterator();
            while (iterator.hasNext()) {
                MySpi next = iterator.next();
                next.print();
            }
        }
    }
    

    输出结果

    My spi 机制
    You spi 机制
    
最后修改时间: 5 minutes ago