ServiceLoader从不同的包加载

时间:2016-07-20 19:19:14

标签: 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>();

    while (iterator.hasNext()) {
        try {
            services.add(iterator.next());
        } catch (ServiceConfigurationError serviceError) {
            serviceError.printStackTrace(System.err);
        }
    }

    return services;
}

如果我将服务作为依赖项添加到ServiceLocator阻止的maven模块,它只会找到服务。如果此服务使用ServiceLocator本身,我将有一个循环依赖。

我需要ServiceLocator从未知的依赖项中加载类。

0 个答案:

没有答案