`

java.util.ServiceLoader

    博客分类:
  • jdk
 
阅读更多

一、Java中java.util.ServiceLoader

转载:https://www.cnblogs.com/shangxiaofei/p/10548921.html

https://blog.csdn.net/jjlovefj/article/details/82907400

想必大家多多少少听过spi,具体的解释我就不多说了。但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问题来解释:

实现: 其实具体的实现类就是java.util.ServiceLoader这个类。

要想了解一个机制的原理,首先得知道它是怎么运行的,需要什么配置,才能运行起来。然后再分解来了解实现。对于技术实现也是一样,先看这个类是怎么实现的,先让它跑起来,看到效果。然后再讲原理。
按照使用说明文档,应该分下面几个步骤来使用:

  1. 创建一个接口文件
  2. 在resources资源目录下创建META-INF/services文件夹
  3. 在services文件夹中创建文件,以接口全名命名
  4. 创建接口实现类,将实现类全名称写在刚才创建好的文件中。

 二、Google类似实现AutoService

google开源的AutoService

 

 

三、spring中相关实现

spring.factories spring.schemas spring.handlers:

org.springframework.core.io.support.SpringFactoriesLoader

—— public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories"

 

org.springframework.beans.factory.xml.PluggableSchemaResolver

—— public static final String DEFAULT_SCHEMA_MAPPINGS_LOCATION = "META-INF/spring.schemas";    

    

org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver

—— public static final String DEFAULT_HANDLER_MAPPINGS_LOCATION = "META-INF/spring.handlers";

 

Spring Factories:

https://www.jianshu.com/p/00e49c607fa1

 

spring.handlers的加载过程:

https://blog.csdn.net/kaka508/article/details/47258661

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics