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);
        }
    }
相关推荐
Q_Q19632884752 分钟前
python+django/flask基于深度学习的个性化携程美食数据推荐系统
spring boot·python·深度学习·django·flask·node.js·php
微学AI11 分钟前
基于openEuler操作系统的Docker部署与AI应用实践操作与研究
后端
王元_SmallA14 分钟前
IDEA + Spring Boot 的三种热加载方案
java·后端
LCG元15 分钟前
实战:用 Shell 脚本自动备份网站和数据库,并上传到云存储
后端
Yeats_Liao16 分钟前
时序数据库系列(四):InfluxQL查询语言详解
数据库·后端·sql·时序数据库
小苏兮18 分钟前
【把Linux“聊”明白】编译器gcc/g++与调试器gdb/cgdb:从编译原理到高效调试
java·linux·运维·学习·1024程序员节
Java天梯之路18 分钟前
04 数据类型转换
java
清空mega21 分钟前
从零开始搭建 flask 博客实验(常见疑问)
后端·python·flask
白衣鸽子22 分钟前
MySQL数据库的“隐形杀手”:深入理解文件结构与治理数据碎片
数据库·后端·mysql
neoooo26 分钟前
⚙️ Spring Boot × @RequiredArgsConstructor:写出最干净的依赖注入代码
spring boot·后端·spring