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

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

public class HandlerRegistry

{

private static HandlerRegistry registry;

private ServiceLoader 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 it = handlerLoader.iterator();

while (it.hasNext()) {

Handler handler = it.next();

System.out.println("found handler "+handler);

}

}

catch (ServiceConfigurationError err) {

err.printStackTrace();

}

return null;

}

}

我有一个com.example.handler.Handler接口(为简单起见,现在为空),以及一个实现该接口的com.example.handler.handlers.DummyHandler类.我在jar中创建了一个名为META-INF / services / com.example.handler.Handler的文件,其中包含单行

com.example.handler.handlers.DummyHandler

根据javadoc.我的单元测试只是调用lookup()方法来验证查找项目的处理程序.当然,最终将需要进行某种检查,以查看这是否是该项目的正确处理程序,但是在这一点上,我什至没有看到注册表中加载了我的DummyHandler类.我在这里做错什么了吗?

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值