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);
        }
    }
相关推荐
用户8356290780511 分钟前
使用 Python 在 Excel 中添加和编辑形状
后端·python
用户204937554954 分钟前
端侧语音部署踩坑:模型能跑不等于终端真的能用
后端·算法
n8n12 分钟前
Spring AI 结构化输出实战:让模型返回 JSON,而非自由文本
后端
Wang's Blog12 分钟前
Java框架快速入门: Spring Security+OAuth2之密码验证规则与自定义注解
java·数据库·spring
一嘴一个橘子20 分钟前
java - redis 缓存击穿 - 互斥锁
java
shehuiyuelaiyuehao25 分钟前
算法39,位运算,消失的两个数字
java·数据结构·算法
小刘在重生~27 分钟前
Java 异常体系完整笔记
java·笔记·python
用户83562907805129 分钟前
使用 Python 为 PDF 添加和管理超链接
后端·python
抠脚小弟30 分钟前
Spring Task 定时任务详解:从入门到实战
java·后端·spring