자바에는 ServiceLoader 가 있습니다. java.util의 클래스 찾는 패키지 서비스 제공업체 클래스 경로에서 검색하여 런타임에. 모듈에 정의된 서비스 제공자의 경우 샘플 애플리케이션에서 서비스와 함께 모듈을 선언하고 어떻게 작동하는지 확인할 수 있습니다.
예를 들어 "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();
}
}
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 " 모듈 선언을 통해 LoggerFinder 구현을 제공할 수 있습니다. "제공 – 가 있는 서비스 " 절.
module com.tutorialspoint.test.logging {
provides java.lang.System.LoggerFinder
with com.tutorialspoint.platformlogging.logger.MyLoggerFinder;
}