我使用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>();
while (iterator.hasNext()) {
try {
services.add(iterator.next());
} catch (ServiceConfigurationError serviceError) {
serviceError.printStackTrace(System.err);
}
}
return services;
}
如果我将服务作为依赖项添加到ServiceLocator
阻止的maven模块,它只会找到服务。如果此服务使用ServiceLocator
本身,我将有一个循环依赖。
我需要ServiceLocator
从未知的依赖项中加载类。