• 作者:老汪软件技巧
  • 发表时间:2024-10-09 10:01
  • 浏览量:

1.什么是Java SPI ?

SPI全称Service Provider Interface,在Java中还是一个比较重要的概念,是Java提供的一套用来被第三方实现或者扩展的API,或者换句话说,SPI是一种服务发现机制。 SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服务实现者解耦,能够提升程序的扩展性、可维护性。修改或者替换服务实现并不需要修改调用方。 很多框架都使用了 Java 的 SPI 机制,比如:Spring 框架、数据库加载驱动、日志接口、以及 Dubbo 的扩展实现等等。

2.SPI原理是什么?

要使用SPI比较简单,只需要按照以下几个步骤操作即可:

3.代码工程实验目标

基于spi实现搜索功能扩展

service

package com.et;
public interface SearchService {
    String search(String key);
}
package com.et;
public class RedisSearch implements SearchService{
    @Override
    public String search(String key) {
        return "Redissearch" + key + "result Yes";
    }
}
package com.et;
public class MysqlSearch implements SearchService{
    @Override
    public String search(String key) {
        return "Mysqlsearch" + key + "result No";
    }
}

com.et.SearchService

com.et.MysqlSearch
com.et.RedisSearch

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库4.测试测试类

package com.et;
import java.util.ServiceLoader;
public class Main {
    public static void main(String[] args) {
            ServiceLoader serviceLoader = ServiceLoader.load(SearchService.class);
            System.out.println("============ Java SPI test===========");
            serviceLoader.forEach(loader -> System.out.println(loader.search("Yes Or No")));
        }
}

运行main方法

============ Java SPI test===========
MysqlsearchYes Or Noresult No
RedissearchYes Or Noresult Yes

5.引用