spring中bean的定义可以通过编程,可以定义在properties文件,也可以定义在通过xml文件中,用的最多的是通过xml形式,由于xml格式具有很好的自说明便于编写及维护。对于xml的文档结构、数据定义及格式验证可以通过DTD和Schema, 在spring2.0之前采用的是DTD,在spring2.0之后采用Schema。使用Schema方式使得spring更加便于与第三方进行集成以及第三方可以提供更简单更便于使用的个性化配置方式。对于XmlSchema具体知识这里不做介绍,但是Schema中有个重要的概念命名空间(namespace)必须要提一下,spring就是利用它来做第三方自定配置格式的解析的,在spring中aop, transaction的就是给第三一个实现自己自定义配置很好实例。
类DefaultBeanDefinitionDocumentReader会把spring的xml配置文件当做一个文档格式来读取此文档主要讲解dbbo的自定义处理器DubboNamespaceHandler来怎样把dubbo自定义的元素转换成的bean定义并注册到spring的容器中去的。
public void init() {
//配置<dubbo:application>标签解析器
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
//配置<dubbo:module>标签解析器
registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));
//配置<dubbo:registry>标签解析器
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
//配置<dubbo:monitor>标签解析器
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
//配置<dubbo:provider>标签解析器
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
//配置<dubbo:consumer>标签解析器
registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
//配置<dubbo:protocol>标签解析器
registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));
DubboNamespaceHandler中注册了这么多的BeanDefinitionParser用来解析dubbo定义的那些xml元素节点如:
<dubbo:application name="dubbo-admin" />
<dubbo:registry address="${dubbo.registry.address}" check="false"file="false" />
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />
各个BeanDefinitionParser会把上面的xml元素转换成spring内部的数据结构BeanDefinition,最终当被引用时实例化成对应的bean如<dubbo:application/>节点得到ApplicationConfig.
当然通过默认配置方式也是可以的如:
<dubbo:registry address="${dubbo.registry.address}" check="false" file="false" />
也可以配置成
<bean id=” registry”class=” com.alibaba.dubbo.config.RegistryConfig”/>
<property name=” address” value=” ${dubbo.registry.address}”/>
<property name=” check” value=” false”/>
<property name=” file” value=” false”/>
<bean/>
利用自定义元素解析更加简洁,同时也可以屏蔽一些具体的实现类型,如你不需要知道com.alibaba.dubbo.config.RegistryConfig这个类,只需要知道注册registry这个元素就可以了,用户可以通过文档以及schema的在ide中的自动提示可以很方便的去配置。
相关推荐
【XXPAY公司的xxpay-master项目】是一个开源项目,主要基于Java技术栈,融合了Apple Spring Cloud、DubBo和Spring Boot等先进的开发框架和技术,旨在提供一个高效、稳定且可扩展的支付解决方案。该项目的核心目标是...
这个项目提供了一个完整的解决方案,将这些技术融合在一起,帮助开发者快速搭建分布式RESTful服务,同时利用Dubbo进行服务治理,Netty提升通信效率,Spring MVC构建Web接口,以及Nginx做反向代理和负载均衡。...
Spring Cloud Alibaba和Dubbo融合实现知识点总结 一、Spring Cloud Alibaba概述 Spring Cloud Alibaba是阿里巴巴集团开源的基于Spring Cloud的微服务解决方案,旨在帮助开发者更好地构建分布式应用程序。它提供了...
`dubbo`是阿里巴巴开源的一款高性能、轻量级的RPC框架,它提供了服务注册与发现、远程调用、负载均衡、容错、监控等功能。在微服务架构中,dubbo常被用来实现服务间的通信,提高了服务间的解耦和系统整体的响应速度...
1. Spring Cloud Alibaba:将Dubbo与Spring Cloud生态融合,提供更全面的微服务解决方案。 2. Sentinel:Alibaba开源的流量控制和熔断组件,可与Dubbo配合使用,增强系统的稳定性。 3. Nacos:Alibaba的动态配置、...
本项目是一个基于Dubbo、Maven、Spring及SpringMVC、MyBatis的集成示例,旨在演示如何在实际开发中将这些主流技术框架融合在一起,构建一个完整的微服务架构。下面将详细介绍这个项目的组成部分以及相关知识点。 1....
springboot融合dubbo 提供者消费者 协议api,provider 使用他提供服务,consumer使用他调用服务,实现代码 参考:https://download.csdn.net/download/itexplorersfather/10346699
Spring Boot Starter Dubbo Example是一个基于Spring Boot和Dubbo构建的应用示例项目,旨在帮助开发者理解和实践如何在Spring Boot环境中集成和使用Dubbo服务框架。这个压缩包包含了一个完整的实例,可以作为开发者...
springboot dubbo 融合以及支持多注册中心,演示了多注册中心如何配置,协议api参考:https://download.csdn.net/download/itexplorersfather/10346692
总的来说,这个项目旨在帮助开发者将传统的Dubbo服务与现代微服务架构融合,使得非Spring Cloud环境下的服务也能通过REST接口被Spring Cloud生态中的应用调用,同时利用Eureka实现服务的统一管理和发现。通过这种...
同时,随着SpringCloud的崛起,SpringBoot与Dubbo的整合也有了新的方式,如使用Spring Cloud Gateway作为服务网关,结合Spring Cloud Config进行配置管理等。 总的来说,SpringBoot整合Dubbo项目是一个实用的示例,...
总结来说,"dubbo-ssh分布式项目"是一个融合了Spring MVC、Spring、Hibernate、JPA以及Dubbo的综合实践案例,旨在提供一个完整的分布式系统开发环境,便于开发者学习和使用。无论是对于初学者还是有经验的开发者,都...
SpringBoot整合Dubbo增强版是将流行的微服务框架Dubbo与SpringBoot进行深度融合的一个项目,旨在简化Dubbo在SpringBoot应用中的配置和管理,提供更好的开发体验。在传统的SpringBoot集成Dubbo过程中,可能会遇到一些...
SSM(Spring、SpringMVC、MyBatis)与Dubbo整合是一个常见的企业级应用架构实践,用于构建高性能、高可扩展性的微服务系统。在这个"ssm dubbo整合demo"中,我们主要关注如何将这三个框架与Dubbo服务治理框架进行集成...
同时,Dubbo社区也推出了Dubbo Spring Cloud版,与Spring Cloud生态更好地融合。 6. **注意事项** - 版本兼容性:在升级或降级Dubbo版本时,需确保所有依赖项和服务消费者的兼容性。 - 性能调优:在生产环境中,...
同时,随着SpringCloud生态的发展,Dubbo也逐渐与SpringCloud生态融合,提供更丰富的功能和更好的兼容性。 在项目中,可以参考`dubbo-study`这个目录下的代码,它通常包含了上述所有步骤的示例,可以帮助你更好地...
### 与Spring融合 Dubbo与Spring的融合使得它在企业级应用中得到广泛使用。通过在Spring配置文件中声明服务和引用的配置,Dubbo可以将服务自动注册到注册中心,并且与Spring容器中的Bean实例关联起来。这一集成方式...
本项目以Maven为构建工具,融合了Spring、MyBatis、ZooKeeper和Dubbo等核心组件,构建了一个高效、可扩展的分布式系统。下面我们将深入探讨这个系统的各个组成部分及其工作原理。 首先,Spring作为Java领域中最流行...
- **Spring Boot Starter**:Dubbo提供了与Spring Boot的深度融合,简化项目配置,提升开发效率。 10. **最佳实践** - **微服务架构**:Dubbo在微服务架构中的应用,如何拆分服务、设计接口、管理版本等。 - **...