support spi

This commit is contained in:
Looly
2020-03-02 18:08:58 +08:00
parent 85c9dae9ae
commit bd6b07f6b9
7 changed files with 81 additions and 130 deletions

View File

@@ -1,6 +1,7 @@
package cn.hutool.core.util;
import java.util.Iterator;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
/**
@@ -18,6 +19,25 @@ import java.util.ServiceLoader;
*/
public class ServiceLoaderUtil {
/**
* 加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务。
*
* @param <T> 接口类型
* @param clazz 服务接口
* @return 第一个服务接口实现对象,无实现返回{@code null}
*/
public static <T> T loadFirstAvailable(Class<T> clazz) {
final Iterator<T> iterator = load(clazz).iterator();
if(iterator.hasNext()){
try {
return iterator.next();
} catch (ServiceConfigurationError e) {
// ignore
}
}
return null;
}
/**
* 加载第一个服务,如果用户定义了多个接口实现类,只获取第一个。
*