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

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.dtcms.com/a/353717.html

相关文章:

  • Ubuntu 22.04 插入光驱后磁盘满启动故障clean, ...files, ...blocks
  • Proxmox VE 中启用 CentOS 虚拟机的串口终端(xterm.js 控制台)
  • MAX系列FPGA型号对比及低功耗特性分析
  • 服务器类型与TCP并发服务器构建(SELECT)
  • 冬天的思念
  • 数模笔记day01(数据预处理、K-means聚类、遗传算法、概率密度分布)
  • SqlHelper类库的使用方法
  • 关于DTO、DO、BO、VO
  • Linux系统性能优化全攻略:从CPU到网络的全方位监控与诊断
  • [实战] 半导体工厂生产网络项目案例分享
  • 遥感语义分割消融实验+对比实验
  • AI驱动的前端性能优化:从监控到自动化修复
  • SymPy 与 NumPy 混合编程:解决矩阵类型转换与数学函数兼容性问题
  • 计算机视觉全流程(基础知识)
  • 耐达讯自动化Profibus 集线器:变送器连接的神秘王牌
  • SCDN如何保护敏感内容不被非法访问?
  • 【PyTorch从入门到实战】全面解析PyTorch框架:安装、原理、MNIST实战与核心组件
  • 数据采集如何选择移动代理IP?合理避免网站封禁实战经验
  • Agno Agent​​
  • 需求变更的影响如何评估
  • AI Agent 发展趋势与架构演进
  • 神经网络|(十六)概率论基础知识-伽马函数·上
  • PowerShell下vim编辑文件时产生的额外文件
  • 北京先智先行科技:揭秘先知大模型的创新力量
  • 泰山区委书记张培峰率队考察深兰科技张江新总部,加速推进AI产业投资落地
  • 【AI论文】MV-RAG:检索增强的多视图扩散模型
  • Linux IPTables
  • 7、prefix-tuning、P-tuning、Prompt-tuning
  • 大规模5G无线通信网络
  • 服务器关机故障排查:大白话版笔记