java中的spi机制先看使用代码。
ServiceLoader<IUserService> iLoader=ServiceLoader.load(IUserService.class);//接口类类型
for (IUserService iUserService : iLoader) {//所有配置文件中的实现类
iUserService.updateUser(0);
}
总之一句话,根据一个loader类可以获取获取实现了指定接口的,配置文件中的实现类。
注意配置文件在java/main/resources/META-INF/services/com.jyy.caller.javaSpi.IUserService
文件名是接口全路径名,内容是value,实现类的全路径名。
com.jyy.caller.javaSpi.impl.UserServiceImpl1
com.jyy.caller.javaSpi.impl.UserServiceImpl2
//因为jdk本身的spi机制,错了也不报错,文件没有也不报错,线程不安全,获取配置文件中的所有了,不能根据key获取指定的实现类,所以dubbo自己写了一套。