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);
        }
    }
相关推荐
东风破_2 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
嘻哈∠※2 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
卷无止境3 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
白狐_7983 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2584 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
卷无止境4 小时前
FastAPI 的Admin面板生态
后端·python
捡田螺的小男孩5 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒5 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端
极创信息6 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate