SPI加载机制

SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。

使用SPI:

1.定义SPI接口

2.定义SPI接口实现类

 

 

3.在资源文件目录下创建 META-INF/services 目录,在目录下添加SPI接口全限定类名文件

 

 

4.在创建的文件里添加SPI接口实现类的全限定类名

 

 

5.定义执行方法,ServiceLoader.load()或Service.providers()两个方法加载所定义的类

6.通过上面说到的两个类各自实现的Iterator 获取实现类

 

 

 

原理剖析:

1.为什么要在ClassPath:META-INF/services 下创建文件?

源码里定义的路径

2.通过什么实现的?

实现一个Iterator并传入加载类型和加载器,如果没有实现加载器,会使用默认加载器Thread.currentThread().getContextClassLoader() 获取实现类。

 

posted on 2020-04-21 22:18  Ye-ye  阅读(1179)  评论(0编辑  收藏  举报

导航