gpt4 book ai didi

java - 为什么ServiceLoader总是重新实例化服务?

转载 作者:行者123 更新时间:2023-11-30 03:27:52 26 4
gpt4 key购买 nike

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

为了进行测试,我定义了一个

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

文件包含

com.example.sometest.MockServiceImpl

MockServiceImpl 实现该接口(interface)。

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

为什么会这样,如何让 ServiceLoader 缓存它?

最佳答案

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

关于java - 为什么ServiceLoader总是重新实例化服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com