zoukankan      html  css  js  c++  java
  • SPI: Service Provider Interface

    Service Provider Interface;
    JDK提供的一种服务发现的机制;主要是用于厂商实现JDK的只用。
    比如说打印机,JDK提供了一个驱动接口com.printl.printerDriver;爱普生公司将会提供 com.epson.EpsonPrinterDriver,惠普会提供com.hp.HPDriver;
    然后,ServiceLoader登场,他是JDK提供的专门用于发现服务的类;SPI的服务发现约定是在各个独立厂商提供的jar里面的META-INF文件夹下的services文件夹内,在驱动接口同名文件内定义驱动实现的全名。
    比如,打印机为例,HP就会在在自己提供的jar包内,提供/META-INF/services里面的com.print.printerDriver文件内,添加com.hp.HPDriver文字;
    ServiceLoader.load(printerDriver.class)就会到相应的jar包内找到文件,加载里面定义的类。其实和IoC比较像,都是根据字符串来加载类;但是IoC是在本项目内实现反射,SPI则是在产品和供应商之间实现反射。
    dubbo就是采用了SPI方式,注意打包正确的姿势是在src/main/resources下面添加META-INF文件夹以及dubbo文件夹,最后下面添加com.alibaba.dubbo.rpc.Filter文件。
  • 相关阅读:
    linux top详解
    软件人才必须具备的素质
    合格程序员每天每周每月每年应该做的事
    正则匹配任意字符(包括换行)
    软件测试方案
    LInux进程间的通信方式有哪儿些?
    三网融合
    php路径问题
    xp 安装SATA AHCI驱动
    进程与线程的区别
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/8723241.html
Copyright © 2011-2022 走看看