假设我有一个服务接口com.example.Service

为了测试,我定义了

src/test/resources/META-INF/services/com.example.Service


包含的文件

com.example.sometest.MockServiceImpl


MockServiceImpl实现接口。

现在,当执行ServiceLoader.load(Service.class)并遍历结果时,总是再次实例化我的MockServiceImplServiceLoader的javadoc声明它确实维护了缓存,但是我的模拟服务似乎没有被缓存。

为什么会这样,如何获取ServiceLoader进行缓存?

最佳答案

我认为API意味着缓存是按ServiceLoader实例进行的:“每次调用迭代器方法都会返回一个迭代器,该迭代器首先会产生缓存的所有元素……”。

09-26 12:52