java spi

作者: 百炼 | 来源:发表于2020-03-15 18:16 被阅读0次

java spi实现

当服务提供者(provider),提供一个接口多种实现时,

  1. 在jar包的META-INF/services/目录下创建该接口的全限名文件,文件里面的内容就是该服务接口的具体实现类的名称,而当外部加载这个 模块时,就能通过该jar包META-INF/services/里的配置文件得到具体实现类名,并加载实例化,完成模块的装配
spi工程目录
//Command.java
package com.soa.other.spi;

public interface Command {
    void execute();
}
//ShutdownCommand 
package com.soa.other.spi;

public class ShutdownCommand implements Command{
    @Override
    public void execute() {
        System.out.println("Shutdown");
    }
}
// StartCommand 
package com.soa.other.spi;

public class StartCommand implements Command {
    @Override
    public void execute() {
        System.out.println("Start");
    }
}

//Main调用类

package com.soa.other.spi;

import java.util.ServiceLoader;

public class Main {
    public static void main(String[] args) {
        ServiceLoader<Command> serviceLoader = ServiceLoader.load(Command.class);
        for (Command command : serviceLoader) {
            command.execute();
        }
    }
}

弊端(相比与dubbo的spi):
1.一次性加载
2.全部加载,没有用到也要会加载
3.没有AOP/IOC的支持

相关文章

  • Java - SPI机制

    Java - SPI机制 SPI是什么 SPI全称Service Provider Interface,是Java...

  • dubbo 源码分析 -SPI

    dubbo 中大量使用SPI,在看源码之前必须先了解dubbo的SPI 1、Java原生spi java原生spi...

  • spi

    java中有一些包结尾为spi,如java.nio.channels.spi spi - service prov...

  • 4.Dubbo的SPI扩展点加载机制

    4.1 加载机制概述 4.1.1 Java SPI 在讲Dubbo SPI之前,先来了解一下Java SPI,SP...

  • Dubbo SPI的认识

    Dubbo是基于Java原生SPI机制思想的一个改进. 关于JAVA 的SPI机制 SPI全称(service p...

  • Dubbo SPI 的使用方法(一)- 扩展点自动包装

    开篇 前面有说到 Java SPI 的介绍与使用方法, 而本篇要说的 Dubbo SPI 是基于 Java SPI...

  • dubbo spi机制源码阅读

    dubbo的扩展能力很强大。他是通过扩展Java的spi机制得到的。 Java Spi机制介绍 SPI是Servi...

  • dubbo的spi机制

    dubbo的spi机制 dubbo的扩展点加载机制源自于java的spi扩展机制。那么,何为java的spi扩展机...

  • dubbo的内核剖析

    SPI机制 Java SPI SPI(service provider interface),在运行时,动态加载接...

  • SPI实现接口多实现路由

    SPI简介 SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可...

网友评论

      本文标题:java spi

      本文链接:https://www.haomeiwen.com/subject/afcpehtx.html