当前位置: 首页 > 后端技术 > Java

什么是spi

时间:2023-04-02 00:06:52 Java

SPI,全称ServiceProviderInterface,是一种服务发现机制1.使用java1.创建接口接口com.xxx.IService2.创建两个实现类AImpl和BImpl实现IService接口3.项目资源路径下,META-在INF下创建一个services文件夹,文件以IService的路径命名(文件名com.xxx.IService)resources|--元信息|--服务|--com.xxx.IService实现类的完整路径写在文件中(com.xxx.impl.AImpl和com.xxx.impl.BImpl)可以获得IService实现ServiceLoaderserviceLoader=ServiceLoader.load(IService.class);//迭代器获取IServiceIterator的所有实现iterator=serviceLoader.iterator();while(iterator.hasNext()){iterator.next().doSomething();}将接口(IService)换成抽象类,普通类依然有效。2、Spring使用资源|--元信息|--spring.factories表示spring.factories文件中的依赖com.xxx.IService=com.xxx.impl.AImpl,\com.xxx.impl.BImpl获取方法:@TestpublicvoidtestBootSpi(){ListserviceList=SpringFactoriesLoader.loadFactories(IService.class,ClassUtils.getDefaultClassLoader());对于(ISer副服务:serviceList){service.doSomething();}}