SPI
机制的主要作用是获取接口的所有实现类,可以快速扩展和替换
创建接口及实现类
创建接口:com.maxzhao.IPrint
1 2 3
| public interface IPrint { void print(); }
|
创建实现类:com.maxzhao.CatPrint
1 2 3 4 5 6
| public interface CatPrint implements IPrint { @Override public void print(){ System.out.println("cat"); } }
|
在 resources
下创建文件:META-INF/services/com.maxzhao.IPrint
,写入
加载接口的实现类
1 2 3 4 5 6 7 8 9 10
| public class ServiceLoaderTest { public void tests(){ ServiceLoader<IPrint> serviceLoader = ServiceLoader.load(IPrint.class, classLoader); Iterator<IPrint> iterator = serviceLoader.iterator(); while (iterator.hasNext()) { NodeServerPluginStart next = iterator.next(); assert "com.maxzhao.CatPrint".equals(next.getClass().getName()) } } }
|
本文地址: https://github.com/maxzhao-it/blog/post/804090fa/