Computer >> Máy Tính >  >> Lập trình >> Java

Khi nào sử dụng lớp ServiceLoader trong một mô-đun trong Java 9?


Java có ServiceLoader lớp từ java.util gói có thể giúp định vị nhà cung cấp dịch vụ trong thời gian chạy bằng cách tìm kiếm trong classpath. Đối với các nhà cung cấp dịch vụ được xác định trong các mô-đun, chúng ta có thể xem ứng dụng mẫu để khai báo các mô-đun với dịch vụ và cách nó hoạt động.

Ví dụ:chúng tôi có " test.app "mô-đun mà chúng tôi cần sử dụng Logger có thể được truy xuất từ ​​ System.getLogger () phương pháp gốc với sự trợ giúp của LoggerFinder dịch vụ.

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

Dưới đây là test.app.MainApp lớp:

package com.tutorialspoint.platformlogging.app;

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


Đây là LoggerFinder triển khai bên trong " kiểm tra .logging "mô-đun:

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
   }
}

Trong " test.logging "khai báo mô-đun, chúng tôi có thể cung cấp triển khai LoggerFinder dịch vụ với " cung cấp - với "mệnh đề.

module com.tutorialspoint.test.logging {
   provides java.lang.System.LoggerFinder
   with com.tutorialspoint.platformlogging.logger.MyLoggerFinder;
}