本文代码地址:https://github.com/MSC419/msc-rpc-framework
文章目录
0.实现的改进
1.增加SPI机制,方便我们为程序提供扩展功能
1.SPI机制
参考:
搞懂dubbo的SPI扩展机制 - 知乎 (zhihu.com)
SPI:全称为 Service Provider Interface,是一种服务发现机制。在项目中一个功能接口可由多种不同技术实现,这称为程序的可扩展性,SPI机制就是为了在不修改程序框架的情况下实现程序扩展
1.1 Java SPI
1.1.1 示例
先看看Java SPI 的代码,代码目录:
1.定义接口
public interface Car {
void say();
}
2.编写实现类
public class Tractor implements Car {
@Override
public void say() {
System.out.println("我是拖拉机");
}
}
public class Automobile implements Car {
@Override
public void say() {
System.out.println("我是汽车");
}
}
3.META-INF/services 文件夹下创建一个文件,名称为功能接口Car 的路径com.wx.car.Car,文件内容为接口实现类的路径名
com.wx.car.impl.Automobile
com.wx.car.impl.Tractor
4.测试
public static void main(String[] s){
System.out.println("======this is SPI======");
ServiceLoader<Car> serviceLoader = ServiceLoader.load(Car.class);
Iterator<Car> cars = serviceLoader.iterator();
while (cars.hasNext()) {
cars.next().say();