- 作者:老汪软件技巧
- 发表时间: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")));
}
}
============ Java SPI test===========
MysqlsearchYes Or Noresult No
RedissearchYes Or Noresult Yes
5.引用