자바에는 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; }