java 中ServiceLoader的使用即SPI

爱被打了一巴掌 2022-05-13 07:18 236阅读 0赞

ServiceLoader也像ClassLoader一样,能装载类文件,但是使用时有区别,具体区别如下:

(1) ServiceLoader装载的是一系列有某种共同特征的实现类,而ClassLoader是个万能加载器;

(2)ServiceLoader装载时需要特殊的配置,使用时也与ClassLoader有所区别;

(3)ServiceLoader还实现了Iterator接口。

作用:

(1) 接口类和实现类不在同一个jar包下面

(2)根据接口Class动态加载实现类

(3)实现了解耦

通过在资源目录META-INF/services中放置提供者配置文件 来标识服务提供者

70

在com.student文件中,是具体实现类的名称全名,包括包名

具体实现

通过配置文件加载到所有的实现类

  1. //通过load方法加载,传入父类class,和默认加载器
  2. ServiceLoader<Student> stus =ServiceLoader.load(Student.class,ClassLoader.getSystemClassLoader());
  3. for (Student s: stus ) {
  4. System.out.println(t.toString();
  5. }

发表评论

表情:
评论列表 (有 0 条评论,236人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaSPI

    SPI(Service Provider Interface)是 Java 提供的一种服务发现机制,它允许第三方服务提供者扩展框架的功能。在 SPI 机制中,服务提供者提