spin是什么意思中文翻译_spin是什么意思

spin是什么意思中文翻译_spin是什么意思什么是SPI?SPI简介全称是,可称之为“服务供给接口”,是内置的一种服务提供发现机制,其实这个确切地说是一种思想,并不是独有的专利。谈到不得不提的一个概念就是“面向接口编程”,通过事先定义的接口来找到其所有的接口实现类(服务),而后通过反射逐个实例化对象,这便是的本质。为什么需要S

什么是SPI?   SPI简介   全称是,可称之为“服务供给接口”,是内置的一种服务提供发现机制,其实这个确切地说是一种思想,并不是独有的专利。谈到不得不提的一个概念就是“面向接口编程”,通过事先定义的接口来找到其所有的接口实现类(服务),而后通过反射逐个实例化对象,这便是的本质。   为什么需要SPI   也被叫做服务发现机制,之所以需要服务发现,是因为接口实现的不确定性。就拿来说,如果你没有引入类似于这样的实现,你不会知道它的实现类:
spin是什么意思中文翻译_spin是什么意思
spin是什么意思中文翻译_spin是什么意思   就只是提供了这样一个接口,却并不打算给它实现,为什么?因为现实中的数据库厂商实在是太多了:、、等等,如果都要由官方实现和维护,那工程量实在太大!除此之外还有众多因素制约。   我们知道中要通过反射实例化一个类是需要拿到具体类的全限定类名称的,像这样:   然而对于类似接口这样的情况你完全不可能知道它实现类的全限定类名。   延迟加载与可扩展性   也是一种将实现类的加载延迟的一种机制,我们可以面向接口编程,但免不了要提供一种“在运行时也能正确找到并实例化实现类的途径”,上面的不失为一种途径,但显然不够好,硬编码的缺点大家都懂,假如找不到指定的实现类抛出异常是必然的,更为致命的是:与实现类产生了严重耦合,要换用其它的实现类只能修改代码。   而在中是这样做的:调用方只需要制定接口(如)规范,同时针对这个接口加载服务:,其间没有涉及到任何的具体实现类。服务提供方(即,接口的实现者),实现接口,并在目录下提供一个名为接口全限定名的文件,内容则是接口实现类的全限定名。   从某种层面上说,也正是加载的延迟给予了程序可扩展的特性。   一个模块化的SPI样例   现在我们通过一个简单的多模块样例感受一下带来的便利,体会它是如何做到灵活且无缝的扩展的。   首先在中创建一个简单工程,它将作为三个模块的父工程,这里不再给出具体操作指引。要注意把改为(默认是)让它成为父工程,才能添加子模块:   接下来依次在父工程目录上右键 → → 添加子模块:、、。   其实的主体只有“服务调用者”跟“服务提供者”,但我这里出现了第三个模块:,主要是因为接口是双方都要用的,调用方需要根据接口查找并调用服务,而提供者需要实现接口,如果把接口定义到调用者模块,那么提供者要实现接口就必须引入整个调用者模块!这不够轻量,所以各个模块都要用到的接口单独一个模块才是最明智的做法。   服务调用者模块的文件需要引入接口模块和提供者模块依赖:   而服务提供者模块只需要引入接口模块:   先在模块新建接口:   然后在模块新建调用类:   再在提供一个实现类:   最后不要忘了在的资源目录下新建两个目录:,把接口的全限定类名()作为文件名,内容则是接口实现类的全限定名()。
spin是什么意思中文翻译_spin是什么意思
spin是什么意思中文翻译_spin是什么意思   想象一下,如果你想要使用其它的实现,直接在调用模块的文件中将原来的实现依赖替换即可,这是多么便捷!   Java SPI缺点   注意这里说的是的缺点,是一种机制,而只是它的其中一种实现。不能按需加载。虽然 做了延迟载入,但是基本只能通过遍历全部,也就是接口的实现类得全部载入并实例化一遍。容易造成资源浪费。某个实现类的方式不够灵活,只能通过 形式迭代,不能根据某个参数来对应的实现类。多线程并发使用 类的实例存在安全隐患。实现类不能通过有参构造器实例化。   注意事项   接口实现类必须提供一个无参的构造器!   软件版本   软件版本Java11   结语   的使用核心其实只有类,本文只讲基本的使用,限于篇幅不打算深入其源码,有兴趣可以自行了解,需要注意版本更迭可能会导致源码变动。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/81783.html

(0)
上一篇 2024年 8月 1日
下一篇 2024年 8月 1日

相关推荐

关注微信