我的 ServiceLoader 不想加载我的新服务。我想我已经正确设置了一切。
核心.Main
public class Main {
public static void main(String[] args) {
System.out.println("Before");
Iterator<IService> services = ServiceLoader.load(IService.class).iterator();
while (services.hasNext()) {
IService service = services.next();
System.out.println(service.sayHi());
}
System.out.println("After");
}
}
核心.服务.IService
package service;
public interface IService {
String sayHi();
}
DbDataBuilder.builder.DbDataBuilder
package builder;
import service.IService;
public class DbDataBuilder implements IService {
public DbDataBuilder() {
}
public String sayHi() {
return "I am Data Builder";
}
}
META-INF/服务/service.Iservice
builder.DbDataBuilder
但是当我运行它时,控制台输出是:
Before
After
我有什么不对吗?
当构建器在运行时而不是在编译时位于类路径上时,ServiceLoader 非常有用。您应该添加第三个模块,其中编译范围依赖于 Core,运行时范围依赖于 DbDataBuilder,将 Main 移至第三个模块并享受 ServiceLoader 功能
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)