发布于 2011-01-27 06:05:46
ServiceLoader是在JDK6中添加到java.util中的,在此之前,基本技术被用于服务类。
ServiceLoader和DI框架解决了类似的问题,但不是等价的技术。ServiceLoader加载类路径中找到的特定接口的实现。例如,如果您有一个读取Excel电子表格的程序,并且您发现一个能够读取CSV文件的读取器(该读取器实现了相同的接口),则可以将该读取器放入类路径中,并将其作为程序中的一个选项提供和选择。(这意味着您的代码本质上更加灵活)。
依赖注入(至少在Spring方面)需要先验地了解类路径中的类,才能注入它。需要修改Spring配置文件,以便利用添加到类路径中的任何其他实现。它不能简单地通过重新启动服务器来选择它们。
发布于 2009-07-29 13:05:32
ServiceLoader没有Spring或Guice这样的完整依赖注入框架那么通用。它旨在延迟加载服务,这些服务可以在运行时部署。因此,ServiceLoader对于插件特别有用。
要获得完整的答案,您必须向Tom Hawtin Tackline询问。
发布于 2011-06-30 19:42:12
sun.misc.Service
http://www.docjar.com/docs/api/sun/misc/Service.html
注意,它不是标准J2SE应用编程接口的一部分!它是Sun JDK的非标准部分。所以,如果你使用JRockit,你就不能依赖它。
https://stackoverflow.com/questions/1199765
复制相似问题