小编bac*_*man的帖子

java.util.ServiceLoader 未加载我的提供程序类

我试图将一个基本的基于 SPI 的处理程序注册表放在一起,我从 HandlerRegistry 中查找。当我使用 ServiceLoader.load(Handler.class) 初始化提供程序,然后迭代列表以延迟加载它们时,我没有看到该类的任何实例。为了尽可能简单,我的 HandlerRegistry 类是:

public class HandlerRegistry 
{
  private static HandlerRegistry registry;

  private ServiceLoader<Handler> handlerLoader;

  private HandlerRegistry()
  {
    handlerLoader = ServiceLoader.load(Handler.class);
  }

  public static synchronized HandlerRegistry getRegistry()
  {
    if (registry == null) {
      registry = new HandlerRegistry();
      registry.init();
    }
    return registry;
  }

  private void init()
  {
System.out.println("HandlerRegistry.init()");
  }

  public Handler lookup(String item)
  {
System.out.println("lookup("+item+")");
    try {
      Iterator<Handler> it = handlerLoader.iterator();
      while (it.hasNext()) {
        Handler handler = it.next();
System.out.println("found handler "+handler);
      }
    }
    catch (ServiceConfigurationError err) …
Run Code Online (Sandbox Code Playgroud)

java serviceloader

6
推荐指数
1
解决办法
9686
查看次数

标签 统计

java ×1

serviceloader ×1