Springboot自动获取接口实现

ServiceLoader加载接口实现步骤

1.编写接口

public interface CommunicationAdapterFactory {
    void setKernel(LocalKernel kernel);
    boolean providesAdapterFor(Vehicle vehicle);
    BasicCommunicationAdapter getAdapterFor(Vehicle vehicle);
}

2.编写实现

// 实现类 1
public final class LoopbackCommunicationAdapterFactory implements CommunicationAdapterFactory {
    @Override
    public void setKernel(LocalKernel kernel) {}

    @Override
    public boolean providesAdapterFor(Vehicle vehicle) {
        return true;
    }

    @Override
    public BasicCommunicationAdapter getAdapterFor(Vehicle vehicle) {
        return null;
    }
}

// 实现类 2
public final class MqttCommunicationAdapterFactory implements CommunicationAdapterFactory {

    @Override
    public void setKernel(LocalKernel kernel) {}
    
    @Override
    public boolean providesAdapterFor(Vehicle vehicle) {
        return true;
    }
    
    @Override
    public BasicCommunicationAdapter getAdapterFor(Vehicle vehicle) {
        return null;
    }
}

3.要在resources文件夹下创建文件夹 “META-INF/services”

在创建的文件夹下,将接口文件的引用作为文件名创建文件
在这里插入图片描述

4.将实现的接口文件引用作为文件内容放到文件中

com.mj.tcs.adapter.mqtt.MqttCommunicationAdapterFactory

在这里插入图片描述

5.实现加载

    public static void main(String[] args) {
        ServiceLoader<CommunicationAdapterFactory> factoryLoader = ServiceLoader.load(CommunicationAdapterFactory.class);
        for (CommunicationAdapterFactory factory : factoryLoader) {
            System.out.println(factory);
        }
    }

相关推荐

  1. Springboot获取实时天气

    2024-04-03 20:38:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 20:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 20:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 20:38:03       82 阅读
  4. Python语言-面向对象

    2024-04-03 20:38:03       91 阅读

热门阅读

  1. 面试算法-128-单词拆分 II

    2024-04-03 20:38:03       39 阅读
  2. RabbitMQ

    2024-04-03 20:38:03       31 阅读
  3. Ceph常用命令总结

    2024-04-03 20:38:03       35 阅读
  4. 面试题多态结合线程

    2024-04-03 20:38:03       40 阅读
  5. MATLAB 按照索引提取点云 (56)

    2024-04-03 20:38:03       45 阅读
  6. Qt控件样式设置其一(常见方法及优缺点)

    2024-04-03 20:38:03       34 阅读
  7. Neo4j基础知识

    2024-04-03 20:38:03       39 阅读
  8. Spring中最常用的11个扩展点

    2024-04-03 20:38:03       32 阅读
  9. ctf.show_web11

    2024-04-03 20:38:03       38 阅读
  10. C++ //练习 11.11 不使用decltype重新定义bookstore。

    2024-04-03 20:38:03       37 阅读
  11. 串匹配【C++ 实现】

    2024-04-03 20:38:03       40 阅读
  12. Linux的Shell基础知识总结

    2024-04-03 20:38:03       35 阅读
  13. redis简介

    2024-04-03 20:38:03       38 阅读