定义
SPI 全称(Service Provider Interface) 服务提供接口缩写,是一种服务发现机制。
它的本质是将接口的实现类的全限定名定义在配置文件中,并有服务器读取配置文件,并加载实现类。这样就可以在运行的时候,动态为接口替换实现类。
原理分析
Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。
举个栗子来说
先定义一个接口:
package com.rb.user.provider;
public interface UserProviderService {
String get();
}
定义两个实现类
package com.rb.user.provider.impl;
public class MobilePhoneUserProducer implements UserProviderService {
@Override
public String get() {
return " MobilePhone User Service ";
}
}
package com.rb.user.provider.impl;
public class EmailUserProducer implements UserProviderService {
@Override
public String get() {
return " Email User Service ";
}
}
在resourc