利用auto-service 简化Java SPI (Servi

2024-04-11  本文已影响0人  任未然

一. 概述

二. 实现步骤

2.1 在Maven项目中添加auto-service依赖

   <dependencies>
       <dependency>
           <groupId>com.google.auto.service</groupId>
           <artifactId>auto-service</artifactId>
           <version>1.0.1</version>
       </dependency>
   </dependencies>

2.2 在实现了接口的类上添加@AutoService注解

   import com.google.auto.service.AutoService;
   import my.package.MyService; // 替换为实际接口的全限定名

   @AutoService(MyService.class)
   public class MyServiceImpl implements MyService {
       // ...
   }

编译项目时,@AutoService注解处理器会自动生成对应的META-INF/services/<interface_name>文件,其中包含带有@AutoService注解的实现类全限定名。这样,当使用ServiceLoader.load(MyService.class)时,就可以自动找到并加载这些实现类了。

2.3 获取实现类示例

// 在程序中获取所有`MyService`接口的实现类
public void loadAndDisplayMyServiceImplementations() {
    ServiceLoader<MyService> serviceLoader = ServiceLoader.load(MyService.class);

    // 遍历并打印出所有找到的实现类实例
    for (MyService service : serviceLoader) {
        System.out.println("Found implementation: " + service.getClass().getName());
        // 使用找到的实现类实例进行相关操作...
    }
}
上一篇 下一篇

猜你喜欢

热点阅读