SPI机制

作者: AlanSun2 | 来源:发表于2019-06-19 12:13 被阅读0次

    SPI 全称为 (Service Provider Interface) ,是JDK内置的一种接口实现自动发现机制。

    作用

    动态的为接口加载实现。

    举例

    数据库驱动加载:java.sql.Driver
    Servlet 3.0:ServletContainerInitializer

    java中SPI机制的实现

    java中通过 ServiceLoader来实现SPI机制,例如,数据库驱动加载DriverManager类中使用ServiceLoader来加载数据库驱动。

    ServletContainerInitializer使用的是ServiceLoader变体WebappServiceLoader来实现SPI机制,详情请查看ContextConfig,其实原理都一样。

    SPI配置

    当我们写完实现后,这时SPI还不能使用,还需要进行简单的配置。

    SPI默认会去加载META-INF/services/文件夹下的文件:文件名的格式必须是接口的全限定名。例如,当我们加载java.sql.Driver的实现com.mysql.cj.jdbc.Driver时,文件名及目录格式应如下表示:

    com.mysql.cj.jdbc.Driver.png

    相应的文件内容如下:

    com.mysql.cj.jdbc.Driver
    

    使用场景

    SPI机制在实际开发中使用得场景也有很多。特别是统一标准的不同厂商实现,当有关组织或者公司定义标准之后,具体厂商或者框架开发者实现,之后提供给开发者使用。

    相关文章

      网友评论

          本文标题:SPI机制

          本文链接:https://www.haomeiwen.com/subject/zgvuzqtx.html