SPI
薛定谔see猫 2022/3/24 java
新建一个模块
MySpi用于存储spi接口package com.meinil.spi; public interface MySpi { public void print(); }新建模块
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新建模块
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新建测试模块
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 机制