【发布时间】:2017-08-20 02:35:59
【问题描述】:
Java 的ServiceLoader 类现已正式融入Java 语言。您现在可以使用
META-INF/services 中寻找提供者
provides <spiClass> with <providerClass>
我不明白的是,uses在服务加载模块声明中的使用:
uses <spiClass>
引用The State of the Module System
模块系统 可以识别用途 通过扫描服务 模块中的类文件 调用的工件 的
ServiceLoader::load方法,但那会 既慢又慢 不可靠。那一个 模块使用特定的 服务是根本 该模块的方面 定义,所以对于两者 我们的效率和清晰度 表示在 模块声明 带有uses子句:模块 java.sql { 需要传递 java.logging; 需要传递 java.xml; 导出java.sql; 导出 javax.sql; 导出 javax.transaction.xa; 使用 java.sql.Driver; }
为什么模块系统知道特定服务的用途是基础,尤其是这将如何提高效率?服务不是延迟加载的吗?为什么服务加载器不能即时寻找提供者?
【问题讨论】:
-
“兼顾效率和清晰度”
标签: java java-9 java-module module-info