①构建一个maven工程
包含如下目录结构:
src/main/java
src/main/resources
src/test/java
src/test/resources
②在src/main/resources目录下新建META-INF/services目录
③在src/main/java中新建包,然后新建一个接口
例如
package com.liu.spi; public interface IA { void print(); }
④新建几个实现类
例如:
AIAImpl.java
package com.liu.spi; public class AIAImpl implements IA { public void print() { System.out.println("AIA"); } }
BIAImpl.java
package com.liu.spi; public class BIAImpl implements IA{ public void print() { System.out.println("BIA"); } }
CIAImpl.java
package com.liu.spi; public class CIAImpl implements IA { public void print() { System.out.println("CIA"); } }
⑤在src/main/resources/META-INF/services目录下新建一个文件,文件名叫com.liu.spi.IA(接口的全类名)
文件内容为:接口实现类的全类名(必须换行)
com.liu.spi.AIAImpl
com.liu.spi.BIAImpl
com.liu.spi.CIAImpl
注:如需注释,在全类名前用“#”
⑥编写测试类IATest.java
代码如下:
package com.liu.spi; import java.util.Iterator; import java.util.ServiceLoader; public class IATest { public static void main(String[] args) { ServiceLoader<IA> spiLoader = ServiceLoader.load(IA.class); Iterator<IA> iaIterator = spiLoader.iterator(); while (iaIterator.hasNext()) { iaIterator.next().print(); } } }
⑦打印结果如下: