java 中ServiceLoader的使用即SPI

1 篇文章 0 订阅
1 篇文章 0 订阅

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

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

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

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

作用:

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

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

(3)实现了解耦

 

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

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

具体实现

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

//通过load方法加载,传入父类class,和默认加载器
ServiceLoader<Student> stus =ServiceLoader.load(Student.class,ClassLoader.getSystemClassLoader());

for (Student s: stus ) {  
      System.out.println(t.toString();  
} 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值