Java SPI 思想

简介

java SPI 需要遵循的约定如下:

  1. 当服务者提供某个接口的实现后,在jar包中的META-INF/ervices目录下创建一个以接口全限定为命名的文件。内容为实现类的全限定名
  2. 接口实现类所在的jar包放在主程序的classpath中
  3. java.util.ServiceLoder动态装载实现模块,它通过扫描META-INF/services目录下的配置文件找到实现类的全限定名,把类加载到JVM

实现

定义接口

import java.util.List;

public interface Search {
    List<String> searchDoc(String keyword);
}

接口的某个实现类

import java.util.List;

public class FileSearch implements Search{
    @Override
    public List<String> searchDoc(String keyword) {
        System.out.println("文件搜索 "+keyword);
        return null;
    }
}

某个实现类生效

resources下新建META-INF/services/目录。新建一个文件名为接口全类名 com.dankun.ldemo.spi.Search内容是具体的实现类的全限定名称com.dankun.ldemo.spi.FileSearch

refer

https://zhuanlan.zhihu.com/p/28909673
https://developer.aliyun.com/article/640161

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。