JAVA SPI和Spring SPI

Java SPI作用及原理

在程序开发的时候,开发人员并不想对某些功能的实现写死,需要开放一些口子让其他部门或者第三方接入的时候灵活实现。这个时候就需要JAVA SPI机制。SPI机制可以帮助开发人员从配置文件中加载指定接口的实现类,这样就可以在不改动实现类的代码的前提下,更换或者添加接口的不同实现。可以做到灵活插拔。

spi的使用分为两种,可以使用java内置的spi,也可以使用spring封装的spi。

 

使用spi的步骤

1.创建接口和他的多个实现类

2.在项目的Resource/META-INF/Services目录下创建一个和接口全限定名一样的文件,在里面写入接口的实现类的全限类名

3.使用serviceloader加载

可以看到会加载配置文件中写的实现类,并且会加载所有的实现类。

Spring SPI

Spring SPI是对java spi进行了封装增强,使用SpringFactories的loadFactories方法可以返回得到配置文件中写的实现类的集合,并且可以选择需要的某个实现类。

查看源码可以发现,对配置文件位置也有要求

配置文件的内容需以 接口全限名 = 实现类全限名,换行“ \ ” ,区分符号 ","

输出结果:

对比不难发现,SpringSPI使用起来更方便,实现类的实例都存放在List集合中,调用方可以任意选择。

在项目中,只需要修改调用方的spring.factories文件和引入实现类的jar包,就可以快速选择适合的实现了。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值