何时在Java 9的模块中使用ServiceLoader类?
Java具有java.util包中的ServiceLoader 类,该类可通过在类路径中搜索来帮助在运行时定位 服务提供者。对于模块中定义的服务提供者,我们可以查看示例应用程序以声明带有服务的模块及其工作方式。
例如,我们有一个“test.app”模块,我们需要使用Logger,可以通过LoggerFinder 服务从System.getLogger()工厂方法中检索该Logger。
module com.nhooo.test.app {
requires java.logging;
exports com.nhooo.platformlogging.app;
uses java.lang.System.LoggerFinder;
}下面是test.app.MainApp类:
package com.nhooo.platformlogging.app;
public class MainApp {
private static Logger LOGGER = System.getLogger();
public static void main(String args[]) {
LOGGER.log();
}
}这是“test.logging”模块中的LoggerFinder 实现:
package com.nhooo.platformlogging.logger;
public class MyLoggerFinder extends LoggerFinder {
@Override public Logger getLogger(String name, Module module) {
//根据名称/模块返回记录器
}
}在“test.logging”模块声明中,我们可以使用“Provides–With”子句提供LoggerFinder 服务的实现。
module com.nhooo.test.logging {
provides java.lang.System.LoggerFinder
with com.nhooo.platformlogging.logger.MyLoggerFinder;
}热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短