gpt4 book ai didi

JAVA 6 服务加载器

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:24 25 4
gpt4 key购买 nike

我最近发布了一个question关于在客户端定义抽象服务实现的方法。

dfa提到java.util.ServiceLoader作为我的问题的解决方案。

我最终采用了类似的方式,虽然没有直接使用 ServiceLoader,主要是因为我使用的是 JDK 5。但是当 dfa 提到 ServiceLoader 时,另一个 SOer jut 陷入了 panic 。

我想知道 ServiceLoader 实现的主要问题是什么。虽然有限,但它似乎是解决此问题的好方法,而无需完全使用某些第三方库,如 Guice

最佳答案

ServiceLoader是在JDK6的java.util中加入的,在此之前基础技术是在Service类中使用。

ServiceLoader 和 DI 框架解决了类似的问题,但不是等同的技术。 ServiceLoader 加载在类路径中找到的特定接口(interface)的实现。例如,如果您有一个读取 Excel 电子表格的程序,并且您发现一个读取器能够读取 CSV 文件(实现相同的接口(interface)),您可以将读取器放到类路径中,并使其在您的程序中作为一个选项可用和可选。 (这意味着您的代码本质上更灵活)。

依赖注入(inject)(至少就 Spring 而言)需要先验知识才能注入(inject)它的类路径中的类。需要修改您的 Spring 配置文件,以便利用您添加到类路径的任何其他实现。它不能简单地通过重新启动服务器来选择它们。

关于JAVA 6 服务加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1199765/

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