我们说我有一个服务接口com.example.Service
。
对于测试,我定义了一个
src/test/resources/META-INF/services/com.example.Service
包含
的文件com.example.sometest.MockServiceImpl
MockServiceImpl
实现了界面。
现在,在执行ServiceLoader.load(Service.class)
并迭代结果时,我的MockServiceImpl
总是再次实例化。 ServiceLoader
的javadoc声明它维护缓存,但我的模拟服务似乎没有缓存。
为什么会这样,我如何让ServiceLoader
缓存它?
答案 0 :(得分:2)
我认为API意味着缓存是每个ServiceLoader实例:“迭代器方法的每次调用都会返回一个迭代器,它首先产生缓存的所有元素......”。