zoukankan      html  css  js  c++  java
  • JAVA的SPI简单应用

    最近在研究dubbo时,发现了JAVA的SPI特性。SPI的全名为Service Provider Interface,是JDK内置的一种服务发现机制。

    具体实现:

    1、定义一个接口

    public interface IShape {
        /**
         * 渲染
         */
        void render();
    }

    2、添加几种实现

    public class CircularShape implements IShape {
    
        @Override
        public void render() {
            System.out.println(this.getClass().getName() + "正在绘制圆形");
        }
    }
    public class SquareShape implements IShape {
    
        @Override
        public void render() {
            System.out.println(this.getClass().getName() + "正在绘制正方形");
        }
    }

    3、在META-INF/services/com.zhi.demo.IShape文件添加信息

    com.zhi.demo.impl.SquareShape
    com.zhi.demo.impl.CircularShape

    4、测试

    public class SpiTest {
        public static void main(String[] args) {
            ServiceLoader<IShape> loaders = ServiceLoader.load(IShape.class);
            for (IShape shape : loaders) {
                shape.render();
            }
        }
    }

    5、运行结果

    com.zhi.demo.impl.SquareShape正在绘制正方形
    com.zhi.demo.impl.CircularShape正在绘制圆形

    代码结构图如下

    6、实际应用,sum为各大数据厂商提供了java.sql.Driver接口,每个厂商提供自己的实现。

  • 相关阅读:
    李阳疯狂英语精选365句
    线程 notify,与notifyAll 的区别
    关于Logger,Tomcat 的Logger是如何工作的
    知豆 源
    关于好多继承的问题,我们应该如何去理解
    5+1+2
    wu xing
    ALBPM Time Question
    推荐书集
    “疯狂”的定义
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/10467894.html
Copyright © 2011-2022 走看看