在 Java 9 中的模組中何時使用 ServiceLoader 類?
Java 有來自 java.util 包的 ServiceLoader 類,它可以透過在類路徑中搜索,來幫助在執行時 定位 服務提供商。對於模組中定義的服務提供商,我們可以檢視示例應用程式,瞭解如何使用服務宣告模組,以及它是如何工作的。
例如,我們有一個 "test.app" 模組,我們需要使用能夠在 System.getLogger() 的幫助下從工廠方法中獲取的記錄器 Logger LoggerFinder 服務。
module com.tutorialspoint.test.app {
requires java.logging;
exports com.tutorialspoint.platformlogging.app;
uses java.lang.System.LoggerFinder;
}以下是 test.app.MainApp 類
package com.tutorialspoint.platformlogging.app;
public class MainApp {
private static Logger LOGGER = System.getLogger();
public static void main(String args[]) {
LOGGER.log();
}
}這是 "test.logging" 模組內的 LoggerFinder 實現
package com.tutorialspoint.platformlogging.logger;
public class MyLoggerFinder extends LoggerFinder {
@Override
public Logger getLogger(String name, Module module) {
// return a Logger depending on name/module
}
}在 "test.logging" 模組宣告中,我們可以使用 "provides – with" 子句提供 LoggerFinder 服務的實現。
module com.tutorialspoint.test.logging {
provides java.lang.System.LoggerFinder
with com.tutorialspoint.platformlogging.logger.MyLoggerFinder;
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP