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

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

PHPz
PHPz앞으로
2023-08-25 19:05:021499검색

在Java 9中,何时使用ServiceLoader类在模块中呢?

Java에는 java.util 패키지의 ServiceLoader 클래스가 있습니다. 이 클래스는 런타임 시 클래스 경로에서 공급자를 검색하여 서비스를 찾는 데 도움이 됩니다. 모듈에 정의된 서비스 제공자의 경우 샘플 애플리케이션을 살펴보고 서비스가 포함된 모듈과 작동 방식을 선언할 수 있습니다.

예를 들어 "test.app우리는 我们需要使用 Logger 模块,可以借助 LoggerFinder 서비스의 도움으로 System.getLogger() 팩토리 메소드에서 검색할 수 있는 Logger 모듈을 사용해야 합니다.

<strong>module com.tutorialspoint.test.app {
   requires java.logging;
   exports com.tutorialspoint.platformlogging.app;
   uses java.lang.System.LoggerFinder;
}</strong>

여기에 test.app이 있습니다. MainApp 클래스:

package com.tutorialspoint.platformlogging.app;

public class MainApp {
   private static <strong>Logger </strong>LOGGER = <strong>System.getLogger()</strong>;
   public static void main(String args[]) {
      LOGGER.log();
   }
}

이것은 "test.logging" 모듈 내부의 LoggerFinder 구현입니다:

package com.tutorialspoint.platformlogging.logger;

public class MyLoggerFinder extends LoggerFinder {
   <strong>@Override</strong>
   public Logger getLogger(String name, Module module) {
      // return a Logger depending on name/module
   }
}

"test.logging " 모듈 선언을 통해 " Provide – "Provide the Implement of the LoggerFinder Service>"

<strong>module com.tutorialspoint.test.logging {
   provides java.lang.System.LoggerFinder
   with com.tutorialspoint.platformlogging.logger.MyLoggerFinder;
}</strong>
을 전달할 수 있습니다.

위 내용은 Java 9에서는 언제 모듈에서 ServiceLoader 클래스를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제