• 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)数据库驱动加载

    等等。。。

  • 相关阅读:
    关于 TIdHttp
    DCEF3 相关资料
    WPF RichTextBox 控件常用方法和属性
    Delphi Data Type to C# Data Type
    获取 CPU 序列号
    Visual Studio 调用 Delphi DLL 会退出的解决方案
    IDHttp的基本用法(转)
    TChromeTabs 优化改进
    java与json转换
    js charAt()方法
  • 原文地址:https://www.cnblogs.com/vincentren/p/10742995.html
Copyright © 2020-2023  润新知