1

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

对于测试,我定义了一个

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

包含的文件

com.example.sometest.MockServiceImpl

实现MockServiceImpl接口。

现在,当执行 aServiceLoader.load(Service.class)并迭代结果时,myMockServiceImpl总是会再次实例化。javadoc forServiceLoader声明它确实维护了一个缓存,但我的模拟服务似乎没有被缓存。

为什么会这样,我如何获得ServiceLoader缓存它?

4

1 回答 1

2

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

于 2015-04-20T13:55:36.573 回答