Hello大家好,我是小奕,一个工作了五年的阿里程序员,欢迎评论底下留言加粉丝群,我会拉你们加入粉丝群,觉得看的不错想了解更多这样的短文,也请大家多多关注这个我主页动态其他帖子。

如果你是第一次听到这个名词,那么不好意思,你是凭实力拿低薪的同学!为时不晚,赶紧卷起来。​之前面试包括工作几年同学面试这个问题,我有点惊讶,现在很多主流框架都用到这一个机制,竟然不知道。这个问题是什么是SPI,它有什么作用?下面我们来看看普通人和老司机对于这个问题的一个回答。
普通人的回答:SPI我记得好像在那个Dubbo里面有用到。就说它可以去实现这种就是功能的扩展嘛,我记得因为在double里面就是说有一些什么负载均衡的策略嘛,我如果说我觉得他里面自带策略不够的话,或者他的策略没达到我的需求的话,我是可以用SPI这样的方式去扩展。

老司机的回答:SPI的全称呢,是service provider interface,它是jdk里面内置的一种动态扩展的一个实现,简单来说我们可以定一个标准的接口,然后第三方库里面可以去实现这个接口。那么我们程序在运行的时候呢,会根据配置信息动态加载第三方的一个实现,从而去完成功能的一个动态扩展机制。我们知道在Java里面,SPI的机制非常典型的一个实现案例,就是数据库的一个驱动。java.jdbc.driver。jdk里面定义的数据库的一个驱动类叫Driver,它是一个接口,而JDK里面并没有提供这个Driver的一个实现,具体的实现是由第三方的数据库厂商来完成的。在程序运行的时候,会根据我们生命的驱动类型来动态去加载对应的一个扩展实现,从而去完成数据库的一个连接动作。除此以外,在很多开源扩展里面都有借鉴Java spi的一个思想,去提供自己的一个SPI的一个框架,比如说double里面定义了一个extension loader,它实现一个动态扩展的功能,在spring里面呢,提供了一个spring factory loader去实现外部功能的一个集成。

SPI的思想确实很有价值,在实际业务开发里面我们可以利用这样的一个思想,在不修改核心代码的情况下去提供功能的增强和扩展。
全部评论

相关推荐

点赞 评论 收藏
分享
08-14 11:30
门头沟学院 Java
失去了成为米孝子的机会
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
一天代码十万三:白面具还是太阴了,还得削
点赞 评论 收藏
分享
家里人这种思想对吗?最近找到了某大厂算法岗的实习,家里人一直跟我说要给领导买点东西,搞好关系,我真的搞不清楚他们这种思想到底怎么来的,真的很烦他们教我做事,他们总觉得自己是对的,我不照着他们的想法做,就觉得我态度不对,之前找实习也是只会嘴巴上对我说你要加油,你要努力,但是根本不知道我背后付出了多少努力,真的好烦被教做事的感觉。
青春运维少年不会梦到...:小时候老爸每次外出打工,我都会说注意安全,可是我真的懂老爸的工作吗,一个小学文凭的人出去打工能有什么安全的工作,可是老爸还是慈祥的回应我,仿佛每天能安全回家都归功于我的祈福。到了现在,我跨越3000多公里去了陌生的城市,老爸还是那个老爸,只不过现在多了问我的情况,会问我适应新城市吗,适应工作强度吗,到最后真的好奇,问我这个工作是干啥的;老爸没文化,不知道计算机网络有七层结构,也不知道云saas订阅,我只能说,就像汽车修理厂一样,我是那个修车的师傅。老爸可能觉得真的理解不了我的工作,之后也就没多问了。不过仍然还是给我传授他的经验,对于老爸来说,他也知道我做的是他难以理解的工作,知道小县城的那套江湖规矩难以闯荡大城市,但是他依旧会关心我。。。
实习的内耗时刻
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务