首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java6 ServiceLoader

Java6 ServiceLoader
EN

Stack Overflow用户
提问于 2009-07-29 12:01:42
回答 4查看 4.3K关注 0票数 6

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

dfa提到java.util.ServiceLoader是我的问题的一个解决方案。

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

我想知道ServiceLoader实现的主要问题是什么。虽然有限,但它似乎是一个解决这个问题的好方法,而不需要完全使用像Guice这样的第三方库

EN

回答 4

Stack Overflow用户

发布于 2011-01-27 06:05:46

ServiceLoader是在JDK6中添加到java.util中的,在此之前,基本技术被用于服务类。

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

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

票数 4
EN

Stack Overflow用户

发布于 2009-07-29 13:05:32

ServiceLoader没有Spring或Guice这样的完整依赖注入框架那么通用。它旨在延迟加载服务,这些服务可以在运行时部署。因此,ServiceLoader对于插件特别有用。

要获得完整的答案,您必须向Tom Hawtin Tackline询问。

票数 3
EN

Stack Overflow用户

发布于 2011-06-30 19:42:12

sun.misc.Service

http://www.docjar.com/docs/api/sun/misc/Service.html

注意,它不是标准J2SE应用编程接口的一部分!它是Sun JDK的非标准部分。所以,如果你使用JRockit,你就不能依赖它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1199765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档