Dubbo SPI 和 Java SPI 区别?
一、Dubbo SPI 和 Java SPI 区别
Java SPI
核心类:java.util.ServiceLoader
服务是一组众所周知的接口和(通常是抽象的)类。服务提供者是服务的特定实现。提供者中的类通常实现接口,并子类化服务本身中定义的类。服务提供者可以以扩展的形式安装在Java平台的实现中,即放置在任何常见扩展目录中的jar文件。提供程序也可以通过将它们添加到应用程序的类路径或其他特定于平台的方法来提供。
通过在资源目录META-INF/services中放置一个提供程序配置文件来识别服务提供程序。文件名是服务类型的完全限定二进制名称。该文件包含具体提供程序类的完全限定二进制名的列表,每行一个。每个名称周围的空格和制表符以及空白行将被忽略。注释字符是’#’;在每一行中,名列前茅个注释字符之后的所有字符都将被忽略。文件必须用UTF-8编码。
Dubbo SPI
Dubbo重新实现了一套功能更强的SPI机制, 支持了AOP与依赖注入,并且利用缓存提高加载实现类的性能,同时支持实现类的灵活获取。
核心类:org.apache.dubbo.common.extension.ExtensionLoader
对 Dubbo 进行扩展,不需要改动 Dubbo 的源码
延迟加载,可以一次只加载自己想要加载的扩展实现。
增加了对扩展点 IOC 和 AOP 的支持,一个扩展点可以直接 setter 注入其
它扩展点。
Dubbo 的扩展机制能很好的支持第三方 IoC 容器,默认支持 Spring Bean。
延伸阅读:
二、扩展点
Dubbo作用灵活的框架,并不会强制所有用户都一定使用Dubbo提供的某些架构。例如注册中心(Registry),Dubbo提供了zk和redis,但是如果我们更倾向于其他的注册中心的话,我们可以替换掉Dubbo提供的注册中心。针对这种可被替换的技术实现点我们称之为扩展点,类似的扩展点有很多,例如Protocol,Filter,Loadbalance等等。
以上就是关于Dubbo SPI 和 Java SPI 区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
chatgpt将带来哪些影响?
ChatGPT是一个大型的人工智能语言模型,由OpenAI进行训练。它的出现将对人工智能技术产生重要影响,并在诸多领域产生重要影响。1.提高人工智能...详情>>
2023-10-11 17:16:23
Hibernate 和 Spring Data JPA有哪些区别?
一、Hibernate 和 Spring Data JPA的区别1、功能不同Hibernate是一个ORM(对象关系映射)框架,用于在Java应用程序中管理数据库的访问和操作;...详情>>
2023-10-11 16:26:07
什么是用户体验 (UX) 设计?
一、什么是用户体验 (UX) 设计用户体验 (UX) 设计是设计和开发数字产品,如网站和应用程序,为用户提供一个无缝和愉快的体验。它包含了获得和纳...详情>>
2023-10-11 10:02:10
k-means方法存在的主要缺点是什么以及如何解决?
一、k-means方法缺点1.K值的选取不好把握;2.对于不是凸的数据集比较难收敛;3.如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,...详情>>
2023-10-11 06:54:05