Ash*_*ash 3 java dependency-injection serviceloader
Java的ServiceLoader需要这些条目存在于JAR文件中.有没有办法在运行时以编程方式添加这些服务条目以进行单元测试?尤其是当JAR尚未建成时.
不要太专注于JAR文件.它们是封装服务的首选方式,但它们不是必需的.关键是ClassLoader.getResources(String)- Stringarg实际成为了("META-INF/services/" + serviceClass.getName()).要记住的另一点信息是ServiceLoader.load(Class)使用上下文类加载器(当然,您也可以使用ServiceLoader.load(Class, ClassLoader)).所以...你真正需要做的是操纵类路径或配置上下文类加载器以使ServiceLoader快乐.