Java spi

作者: wonfi_admin | 来源:发表于2018-03-11 22:13 被阅读0次

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。

具体是在JAR包的"src/META-INF/services/"目录下建立一个文件,文件名是接口的全限定名,文件的内容可以有多行,每行都是该接口对应的具体实现类的全限定名。

先看接口

package com.demo.service;

public interface Animal {

    public void eat();
}

Animal这个接口有两个实现类

package com.demo.service.impl;

import com.demo.service.Animal;

public class Cat implements Animal {

    public void eat() {
        System.out.println("cat eat");

    }

}

package com.demo.service.impl;

import com.demo.service.Animal;

public class Dog implements Animal {

    public void eat() {
        System.out.println("dog eat");

    }

}

接口写完了,文件的内容如下


1111.PNG

运行如下代码,看结果

package com.demo;

import java.util.ServiceLoader;

import com.demo.service.Animal;

public class Test {

    public static void main(String[] args) {
        ServiceLoader<Animal> spi = ServiceLoader.load(Animal.class);
        for(Animal animal : spi){
            animal.eat();
        }
    }
}

结果是


1111.PNG

相关文章

  • 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/lvcgfftx.html