zoukankan      html  css  js  c++  java
  • SPI

    SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。

    Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。

    实现

    1、定义接口

    public interface Animal {
        void say();
    }  

    2、接口实现类

    public class Cat implements Animal {
    
        @Override
        public void say() {
            System.out.println("i'm a cat");
        }
    }
    
    public class Dog implements Animal {
    
        @Override
        public void say() {
            System.out.println("i'm a dog");
        }
    }

    3、在META-INF/services目录下创建和配置对应的文件

    com.vincent.spi.Cat
    com.vincent.spi.Dog
    

    4、测试

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

     输出结果:

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

    5、应用

    应用到java spi的框架还是很多的,如:

    (1)spring的web包

    (2)durid连接池

    (3)数据库驱动加载

    等等。。。

  • 相关阅读:
    JavaScript--数组的声明与创建
    JavaScript--Object对象的两种表示方法
    上下文模式
    Ajax详解
    JS面向对象之原型链
    JS面向对象特性和值类型与复合类型
    JS面向对象使用面向对象进行开发
    JS中的递归
    前端协作流程
    JavaScript中内存使用规则--堆和栈
  • 原文地址:https://www.cnblogs.com/vincentren/p/10742995.html
Copyright © 2011-2022 走看看