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() 获取实现类。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM