让我们考虑情况-有N个模块,并且所有模块都具有相同接口(com.foo.SomeService
)的服务。是否可以通过模块名称(my.module
)获得此服务,而无需迭代所有模块的所有服务?
我不知道这是不是一个真正的问题。选择服务提供商的正确方法是探究其功能,这意味着设计一个良好的服务接口,以便消费者有足够的能力来选择适当的实现。
如果这个问题是关于配置某些东西以使用特定的服务提供商的,那么如果您确实需要:通过模块名称进行选择就不难了:
ServiceLoader.load(service).stream()
.filter(p -> "X".equals(p.type().getModule().getName()))
.map(Provider::get)
.findAny();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句