spi随手记

Service Provider Interface

java spi
java提供的一套用来被第三方实现或扩展的api,这是一种面向对象编程的思想,其使用有如下规定:
    1 服务提供者,在jar包的META-INF/service下定义一个文件, 名称为接口全限名,内容为实现类
    2 实现类所在的jar必须在主程序的classpath中
    3 主程序通过java.util.ServiceLoader将实现类加载到jvm中
    4 实现类必须提供无参构造函数
使用场景很多:
    1 数据库驱动接口的不同实现加载
    2 日志门面的不同实现加载等等

spring spi
spring也提供了类似的功能。使用规范如下:
    1 在META-INF下定义spring.factories,内容为{接口名}={实现类}[,{实现类}]
    2 spring在启动的时候会通过钩子调用org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames进行加载
使用场景很多:
    1 我们都知道spring-boot提供了自动配置的功能,我们在开发一些公共组件的时候,可以通过该功能实现使用者无需配置即可依赖使用,这种技术就是使用了spring的spi功能,具体使用方式如下:
    2 例如自动加载配置中心配置的客户端等等 

发布了22 篇原创文章 · 获赞 1 · 访问量 528

猜你喜欢

转载自blog.csdn.net/weixin_37512224/article/details/104074488