接口编程,配置动态改变。 跟ioc思想相同。 模块化的设计思想。
    动态替换发现的机制。是的第三方模块的逻辑可以与应用代码解耦。

    1. 在在META-INF/services下创建接口名的文件,里面是实现类全名
    2. 实现类放在classpath下
    3. 主程序通过serviceloader动态加载实现类。写入vm
    4. spi必须实现一个无参构造器