SPI
SPI 全称为 Service Provider Interface,是 Java 中一种服务发现机制。在 SPI 机制中,服务提供者为某个接口实现具体的类,而在运行时,通过 SPI 机制,查找到对应的实现类,并将其加载进行使用。比较典型的一个例子就是 java.jdbc.Driver 这个数据库驱动接口,在 Java 中只提供了接口的定义,具体的实现类由各个数据库厂商提供的驱动包来完成,程序在运行的时候会根据当前导
入的驱动包来完成对应数据库的连接。
Dubbo
在 Dubbo 中,根据 Java SPI 的思想,衍生了不同的 SPI 实现。
- 指定名称的扩展点实现,也就是根据指定名称获取并加载对应的扩展点实现类
- @Adaptive 注解定义自适应扩展点,它会根据上下文参数动态适配一个具体的实现类
- @Activate 注解定义的激活扩展点,它会根据上下文的相关参数配置,来决定哪些扩展点会被动态激活,主要体现在 Filter 中。
SPI 思想可以为程序提供比较强大的的可扩展性能力,在企业级开发中,可以尝试去借鉴和使用。