当前位置: 首页 > java >正文

Dubbo加标签方式

Dubbo 3.x 强烈推荐使用注解方式,但 XML 配置方式依然被广泛支持和理解。


一、XML 配置方式中的标签

这是在传统 Spring 应用中集成 Dubbo 服务最经典的方式。你需要在 applicationContext.xmldubbo-provider.xml/ dubbo-consumer.xml等配置文件中使用这些标签。

首先,必须引入 Dubbo 的 XML 命名空间(Namespace):

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" <!-- 关键:dubbo命名空间 -->xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://dubbo.apache.org/schema/dubbo <!-- 关键:dubbo的schema -->http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
常用核心标签:
  1. <dubbo:application/>

    • 作用​:配置当前 Dubbo 应用的基本信息。

    • 必加​:是。

    • 示例​:

      <dubbo:application name="your-app-name"/>
  2. <dubbo:registry/>

    • 作用​:配置注册中心地址。Dubbo 服务会注册到这里,消费者从这里发现服务。

    • 必加​:是(除非使用直连方式,用 url属性)。

    • 示例​(使用 Nacos):

      <dubbo:registry address="nacos://127.0.0.1:8848"/>
    • 示例​(使用 Zookeeper):

      <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  3. <dubbo:protocol/>

    • 作用​:配置服务提供者暴露服务所使用的协议和端口。

    • 位置​:通常只在提供者端配置。

    • 示例​(使用默认的 dubbo 协议):

      <dubbo:protocol name="dubbo" port="20880"/>
  4. 服务提供者标签 - <dubbo:service/>

    • 作用​:用于暴露一个服务,声明它是一个 Dubbo 服务。

    • 位置​:​提供者端。

    • 必加​:提供者端暴露服务时必须加。

    • 示例​:

      <!-- interface 是服务的全限定接口名 -->
      <dubbo:service interface="com.example.service.UserService" ref="userService"/>
      <bean id="userService" class="com.example.service.UserServiceImpl"/>
  5. 服务消费者标签 - <dubbo:reference/>

    • 作用​:用于引用一个远程的 Dubbo 服务,生成一个代理对象。

    • 位置​:​消费者端。

    • 必加​:消费者端调用远程服务时必须加。

    • 示例​:

      <!-- id 是生成的Bean的ID,用于注入 -->
      <dubbo:reference id="userService" interface="com.example.service.UserService"/>

      然后在代码中可以通过 @Autowired注入这个 userService

一个完整的 XML 配置示例

服务提供者配置文件 (provider.xml)​

<?xml version="1.0" encoding="UTF-8"?>
<beans ...><!-- 应用名 --><dubbo:application name="hello-world-app-provider"/><!-- 注册中心 --><dubbo:registry address="nacos://127.0.0.1:8848"/><!-- 通信协议 --><dubbo:protocol name="dubbo" port="20880"/><!-- 要暴露的服务接口实现 --><bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/><!-- 声明要暴露的服务 --><dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>
</beans>

服务消费者配置文件 (consumer.xml)​

<?xml version="1.0" encoding="UTF-8"?>
<beans ...><!-- 应用名 --><dubbo:application name="hello-world-app-consumer"/><!-- 注册中心 --><dubbo:registry address="nacos://127.0.0.1:8848"/><!-- 声明需要引用的远程服务 --><dubbo:reference id="demoService" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
</beans>

二、注解方式(现代推荐方式)

Dubbo 3.x 开始,官方强烈推荐使用基于注解的编程模型,更加简洁和现代。

核心注解:
  1. @DubboService

    • 作用​:标记在服务实现类上,替代 XML 中的 <dubbo:service/>,用于暴露服务。

    • 位置​:​提供者端的服务实现类上。

    • 示例​:

      // 提供者端
      @DubboService
      public class UserServiceImpl implements UserService {// ... 业务实现
      }
  2. @DubboReference

    • 作用​:标记在消费者端的字段或 Setter 方法上,替代 XML 中的 <dubbo:reference/>,用于注入远程服务代理。

    • 位置​:​消费者端的成员变量上。

    • 示例​:

      // 消费者端
      @RestController
      public class UserController {// 注入一个远程的UserService@DubboReferenceprivate UserService userService;@GetMapping("/user")public User getUser() {return userService.getUserById(1L);}
      }
  3. @EnableDubbo

    • 作用​:需要加在 Spring Boot 应用的主启动类上,用于开启 Dubbo 的自动配置和注解扫描。

    • 位置​:主启动类。

    • 示例​:

      @SpringBootApplication
      @EnableDubbo // 开启Dubbo
      public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
      }
配置(替代 XML 中的 <dubbo:application/>, <dubbo:registry/>

在注解模式下,这些全局配置不再使用标签,而是写在 application.ymlapplication.properties文件中。

application.yml 示例

# Dubbo 配置
dubbo:application:name: your-app-name # 对应 <dubbo:application name="..."/>protocol:name: dubboport: 20880        # 对应 <dubbo:protocol port="..."/>registry:address: nacos://127.0.0.1:8848 # 对应 <dubbo:registry address="..."/># 其他配置...cloud:metadata-service-protocol: dubbo # 推荐用于Dubbo3服务发现

总结与选择

功能

XML 配置方式

注解方式(推荐)

应用配置

<dubbo:application/>

dubbo.application.namein YAML

注册中心

<dubbo:registry/>

dubbo.registry.addressin YAML

协议配置

<dubbo:protocol/>

dubbo.protocolin YAML

暴露服务

<dubbo:service/>

@DubboService

引用服务

<dubbo:reference/>

@DubboReference

启动开关

自动加载XML

@EnableDubbo

给你的建议:​

  • 如果是新项目,强烈建议直接使用 ​注解方式​(@DubboService+ @DubboReference+ application.yml),这是目前最主流和简洁的方式。

  • 如果是维护老项目,可能会遇到 XML 配置方式,了解这些标签的含义至关重要。

希望这个详细的解释能帮助你!

http://www.xdnf.cn/news/18965.html

相关文章:

  • Vue3 + 高德地图实现车辆电子围栏监控与报警
  • banner这个文件是怎么请求到后端数据的
  • codeforces(1045)(div2)D. Sliding Tree
  • zookeeper-集群扩缩容
  • 二次校验请求源 IP 是否在 WAF 官方 IP 段内” + “校验是否携带 WAF 专属 HTTP 头
  • 全域管控,一触可达:复合机器人远程监控方案重塑智能制造
  • volitale伪共享问题及解决方案
  • 高效管理远程连接!Remote Desktop Manager 全方位使用指南
  • 对接连连支付(四)-- 收款查询
  • 数据结构:单链表的应用(力扣算法题)第一章
  • 迅睿CMS自定义网站表单:HTML方式调用Select下拉选项数据指南
  • Winsock 操作指南
  • 宝塔面板零基础搭建 WordPress 个人博客与外贸网站 | 新手10分钟上手指南
  • vscode 调试 指定 python文件 运行路径
  • 嵌入式Linux自学不走弯路!670+讲课程!系统学习路线:入门+应用+ARM+驱动+移植+项目 (STM32MP157开发板)
  • Libvio访问异常排查指南
  • 《从有限元到深度学习:我的金属疲劳研究进阶之路》
  • Paimon——官网阅读:主键表
  • 【Kafka】项目整合使用案例
  • 解开 Ansible 任务复用谜题:过滤器用法、Include/Import 本质差异与任务文件价值详解
  • CPU 虚拟化之Cpu Models
  • 微算法科技(NASDAQ:MLGO)突破性FPGA仿真算法技术助力Grover搜索,显著提升量子计算仿真效率
  • 【LwIP源码学习7】ICMP部分源码分析
  • 【工具篇2】Gitee导入github repo作为持续的镜像站,自建 GitHub 镜像仓库详细步骤
  • Web转uni-app
  • 如何使用 Xshell 8 连接到一台 CentOS 7 电脑(服务器)
  • CellCharter | 入门了解
  • Linux 服务器故障全解析:常见问题及处理方法大全
  • imx6ull-驱动开发篇44——Linux I2C 驱动实验
  • PP工单状态JEST表