mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
support spi
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载第一个服务,如果用户定义了多个接口实现类,只获取第一个。
|
||||
*
|
||||
|
Reference in New Issue
Block a user