Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9의 모듈에서 ServiceLoader 클래스를 언제 사용합니까?


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