Java 从不同包加载ServiceLoader
我使用ServiceProviderPattern编写了一个通用的Java 从不同包加载ServiceLoader,java,maven,serviceloader,Java,Maven,Serviceloader,我使用ServiceProviderPattern编写了一个通用的ServiceLocator public <T> List<T> locateAll(final Class<T> clazz) { final Iterator<T> iterator = ServiceLoader.load(clazz).iterator(); final List<T> services = new ArrayList<T&
ServiceLocator
public <T> List<T> locateAll(final Class<T> clazz) {
final Iterator<T> iterator = ServiceLoader.load(clazz).iterator();
final List<T> services = new ArrayList<T>();
while (iterator.hasNext()) {
try {
services.add(iterator.next());
} catch (ServiceConfigurationError serviceError) {
serviceError.printStackTrace(System.err);
}
}
return services;
}
公共列表locateAll(最后一节课){
final Iterator Iterator=ServiceLoader.load(clazz.Iterator();
最终列表服务=新的ArrayList();
while(iterator.hasNext()){
试一试{
add(iterator.next());
}捕获(ServiceConfigurationError serviceError){
serviceError.printStackTrace(System.err);
}
}
返回服务;
}
只有当我将服务作为依赖项添加到ServiceLocator
抵制的maven模块时,它才会查找服务。如果此服务使用ServiceLocator
本身,则我将具有循环依赖性
我需要ServiceLocator
从未知依赖项加载类