SpringBoot整合Alibaba-Dubbo和Apache-Dubbo

news2025/7/18 22:56:28

文章目录

  • 1 Alibaba整合Dubbo
    • 1.1 服务提供者
      • 1.1.1 服务提供者接口
      • 1.1.2 服务提供者实现类
        • 1.1.2.1 项目结构图
        • 1.1.2.2 pom.xml
        • 1.1.2.3 服务实现类
        • 1.1.2.4 配置文件
        • 1.1.2.5 启动类
    • 1.2 服务消费者
      • 1.2.1 项目结构图示
      • 1.2.2 请求入口
      • 1.2.3 配置文件
      • 1.2.4 启动类
  • 2 Apache整合Dubbo
    • 2.1 服务提供者
      • 2.1.1 服务提供者接口
      • 2.1.2 服务提供者实现类
        • 2.1.2.1 项目结构图
        • 2.1.2.2 pom.xml
        • 2.1.2.3 服务实现类
        • 2.1.2.4 配置文件
        • 2.1.2.5 启动类
    • 2.2 服务消费者
      • 2.2.1 项目结构图示
      • 2.2.2 请求入口
      • 2.2.3 配置文件
      • 2.2.4 启动类

由于dubbo起初是阿里开发,后来交给了apache维护,所以市场上就有两个版本的dubbo整合

1 Alibaba整合Dubbo

1.1 服务提供者

1.1.1 服务提供者接口

项目结构图
在这里插入图片描述
pom.xm

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

接口类

public interface DemoService {
    public String test (String msg);
}

1.1.2 服务提供者实现类

1.1.2.1 项目结构图

在这里插入图片描述

1.1.2.2 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service-alibaba-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <!-- 接口-->
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--SpringBoot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Dubbo集成SpringBoot框架起步依赖 -->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- 访问zookeeper客户端 jar包 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <!--排除依赖里的日志-->
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

1.1.2.3 服务实现类

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;


@Component
// @Service 这个注解使用的不是spring里面的,而是com.alibaba.dubbo.config.annotation.Service。
// timeout 配置超时时间 , interfaceClass 接口类 ,version 服务版本,如果配置了服务版本在消费端引用也必须一样
@Service(timeout = 1000,interfaceClass = DemoService.class)
public class DemoAlibabaServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo接收信息"+msg;
    }
}

1.1.2.4 配置文件

application.properties

server.port=8081
server.servlet.context-path=/

spring.application.name=spingboot-alibaba-provider

#设置dubbo的配置
dubbo.application.name=springboot-alibaba-provider
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

1.1.2.5 启动类

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo // 启动dubbo功能
@EnableDubboConfiguration // 启动dubbo配置
@DubboComponentScan("cn.jzh.service.impl") // 扫描提供者实现类
public class AppAlibaba {
        public static void main(String[] args) {
            SpringApplication.run(AppAlibaba.class,args);
        }
}

1.2 服务消费者

1.2.1 项目结构图示

在这里插入图片描述

提供者和消费者的pom.xml一样,所以就不在此处写pom.xml

1.2.2 请求入口

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {

    // 在这里是使用@Reference去发现服务而不是@Autowired去注入Bean,@Reference里面可以配置version、timeout超时时间
    @Reference
    private DemoService demoService;

    @RequestMapping("/test")
    public String findAllStudent(){
        return demoService.test("测试结果");
    }
}

1.2.3 配置文件

application.properties

server.port=8082
server.servlet.context-path=/

spring.application.name=spingboot-alibaba-consumer

#设置dubbo的配置
dubbo.application.name=springboot-alibaba-consumer
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

1.2.4 启动类

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
@EnableDubboConfiguration
public class AppAlibabaConsumer {
    public static void main(String[] args) {
        SpringApplication.run(AppAlibabaConsumer.class,args);
    }
}

2 Apache整合Dubbo

2.1 服务提供者

2.1.1 服务提供者接口

项目结构图
在这里插入图片描述
pom.xm

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

接口类

public interface DemoService {
    public String test (String msg);
}

2.1.2 服务提供者实现类

2.1.2.1 项目结构图

在这里插入图片描述

2.1.2.2 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
    </parent>

    <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service-apache-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- 接口-->
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--SpringBoot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Dubbo集成SpringBoot框架起步依赖 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>
        

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-x-discovery</artifactId>
            <version>4.2.0</version>
        </dependency>
    </dependencies>
</project>

2.1.2.3 服务实现类

在新版apache-dubbodubbo提供者注解@Service提示为过时,推荐使用注解@DubboService

package cn.jzh.service.impl;

import cn.jzh.service.DemoService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

@Component
@DubboService
public class DemoApacheServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo接收信息"+msg;
    }
}

2.1.2.4 配置文件

application.properties

server.port=8083
server.servlet.context-path=/

spring.application.name=spingboot-apache-provider
#设置dubbo的配置
dubbo.application.name=springboot-apache-provider-dubbo
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

2.1.2.5 启动类

package cn.jzh;

import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableDubbo
@SpringBootApplication
@DubboComponentScan("cn.jzh.service.impl")//用来扫描提供的接口实现位置
public class AppApache {

    public static void main(String[] args) {
        SpringApplication.run(AppApache.class,args);
    }
}

2.2 服务消费者

2.2.1 项目结构图示

在这里插入图片描述

提供者和消费者的pom.xml一样,所以就不在此处写pom.xml

2.2.2 请求入口

在新版apache-dubbodubbo提供者注解@Reference提示为过时,推荐使用注解@DubboReference

package cn.jzh.contoller;

import cn.jzh.service.DemoService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {
  
    @DubboReference
    private DemoService demoService;
    @RequestMapping("/test")
    public String findAllStudent(){
        return demoService.test("测试结果");
    }
}

2.2.3 配置文件

application.properties

server.port=8084
server.servlet.context-path=/

spring.application.name=spingboot-apache-consumer

#设置dubbo的配置
dubbo.application.name=springboot-apache-consumer-dubbo
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

2.2.4 启动类

package cn.jzh;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class AppApacheConsumer {
    public static void main(String[] args) {
        SpringApplication.run(AppApacheConsumer.class,args);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch学习笔记(四)官方60min入门教程之图像分类器

你已经了解了如何定义神经网络&#xff0c;计算损失值和网络里权重的更新。 现在你也许会想应该怎么处理数据&#xff1f; 通常来说&#xff0c;当你处理图像&#xff0c;文本&#xff0c;语音或者视频数据时&#xff0c;你可以使用标准 python 包将数据加载成 numpy 数组格式…

Web3中文|10月份超48%的以太坊NFT交易额是假的

来源 | cryptoslate 编译 | BoweniNFTnews.com 10月份全球NFT销售额超过8.5亿美元&#xff0c;总交易量约为300万笔。 NFT月销售额 数据来源&#xff1a;Footprint Analytics 在市场状况不佳的情况下&#xff0c;仍有大量唯一买家与卖家。10月份有超过100 万的唯一买家和卖家…

第九章 哈希表 AcWing 1532. 找硬币

第九章 哈希表 AcWing 1532. 找硬币 原题链接 AcWing 1532. 找硬币 算法标签 哈希表 双指针 思路 使用哈希表集合 用一个哈希表存储硬币。 对于每一枚硬币 x&#xff0c;判断在集合中是否存在 y&#xff0c;使得 x y m。 如果存在&#xff0c;则是一组解&#xff0c;判…

Linux Command htpasswd 创建密码文件

文章目录Linux Command htpasswd 创建密码文件1. 简介2. 安装3. 语法4. 选项5. 示例6. 其他Linux Command htpasswd 创建密码文件 1. 简介 htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。 2. 安装 centos 7、 redhat&#xff…

MCE | 靶向 cGAS-STING 通路或可治疗渐冻症

自从 12 年前被发现以来&#xff0c;STING 途径就吸引了众多TOP生物学家的关注&#xff0c;去年 3 月&#xff0c;陈志坚教授带领的研究团队和其合作者在 Nature 上同日发表三篇论文&#xff0c;让 cGAS-STING 通路大火了一把&#xff0c;并被认为是未来十年内肿瘤免疫靶点的“…

指静脉当前遇到的问题

一、《基于改进残差网络的指静脉识别算法》_易芮 2020.5.20 ①采集到的指静脉图像质量不高"边缘曝光"及手指的自由度导致图像存在的偏移问题 &#xff08;传统的指静脉识别技术是基于图像的纹理、特征点等细节进行特征提取&#xff0c;若图像质量较差的话&#xff…

thymeleaf抽取公共页面

thymeleaf抽取公共页面Thymeleaf中th:include、th:replace、th:insert、th:fragment用法及区别th:include、th:replace、th:insert区别在开发Web网站的时候&#xff0c;HTML页面有很多是相同的&#xff0c;如果每一个页面都写一遍&#xff0c;不仅非常麻烦&#xff0c;而且非常…

基于粒子群算法的城轨列车牵引多目标能耗优化问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

python基础之元组

文章目录一、元组注意&#xff1a;二、创建元组怎么验证这个变量真的是一个元组类型&#xff1a;三、使用迭代遍历元组四、应用场景五、格式化字符串后面的&#xff08;&#xff09;本质上就是元组六、元组和列表之间的转换一、元组 元组&#xff08;Tuple&#xff09;与列表类…

Python(PyQt5)制作帮助文档查看器(可显示后缀名为md的文件)同时显示文本和图片

先看完整效果图: 帮助文档查看器是很多程序中必备要素,而利用Qt中的QTreeView组件可以很方便的查看文件,而QTextBrowser可以直接显示格式化的MarkDown文本。因此可以利用这两个组件制作一个帮助文件查看器。 未优化 效果图: 问题优化: 你会发现QT treeView列宽设置不成功问题…

Mybatis-Plus 06 条件构造器和常用接口

一、wapper介绍 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 ​ QueryWrapper &#xff1a; 查询条件封装 ​ UpdateWrapper &#xff1a; Update 条件封装 AbstractL…

PG::Inclusiveness

nmap -Pn -p- -T4 --min-rate1000 192.168.134.14 nmap -Pn -p 21,22,80 -sCV 192.168.134.14 80端口是默认页面&#xff0c;先查看21端口FTP服务的匿名登录&#xff0c;并未发现可利用信息。 继续查看80端口&#xff0c;在robots.txt中得到提示。 https://www.howtogeek.co…

【Kubernetes | Pod 系列】Pod的 YAML 清单文件详解

目录3. Pod的 YAML 清单文件3.1 获取资源对象 YAML3.2 解析 YAML 清单文件&#xff08;1&#xff09;apiVersion查看 Kubernetes API 中全部的 API 组&#xff08;2&#xff09;kind查看 Kubernetes 中全部的对象资源类型&#xff08;3&#xff09;metadata&#xff08;4&#…

SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式2&#xff1a;使用注解方式整合Mybatis1.先用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper代理接口5.创建Service层和Service的实现层6.创建控制层&#xff08;也就是web层&a…

JQuery使用

简介 一个JavaScript的框架&#xff0c;简化了JS的语法和操作&#xff0c;定义了HTML属性操作、样式操作、DOM 操作等相关函数&#xff0c;实现了对ajax异步请求封装。提供了很多预定义函数的JS文件。 作用 简化部分JavaScript开发 使用步骤 1,引入Jquery 下载 地址1:http:/…

D-0015 红外接收硬件电路设计

红外接收硬件电路设计1 简介2 硬件电路实战3 红外遥控的原理4 主要参数5 电路设计要点1 简介 肉眼可见的光&#xff0c;按照波长进行排列依次为&#xff1a;红、成、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76μm&#xff1b;紫光的波长范围为0.380.46μm。比紫光波长…

[iOS]代码混淆

混淆有几点注意&#xff1a; 不能混淆系统方法 不能混淆init开头的等初始化方法 混淆属性时需要额外注意set方法 如果xib、 storyboard中用到了混淆的内容&#xff0c;需要手动修正。 可以考虑把需要混淆的符号都加上前缀&#xff0c;跟系统自带的符号进行区分。 混淆有风险&am…

MMEdu离线版的使用:实现石头剪刀布图像分类的检测

一、MMEdu离线版的使用 1.双击XEdu v1.0.exe解压缩到某个盘&#xff0c;会是一个文件夹XEdu 2.进入XEdu&#xff0c;双击运行“点我初始化.bat”&#xff0c;等待至运行结束命令提示符窗口自动关闭 3.双击运行“jupyter编辑器.bat”&#xff0c;将会打开一个网页版jupyter&…

记一次由于google新版本限制升级导致的跨域问题

记一次跨域问题 问题描述 系统集成到公司下面的门户网站&#xff0c;由于二级域名还没有申请下来只能先配置了我们的K8S域名 http://wire-qa.motortest.com/#/Data/systemNavigationK8s域名 http://wire-test.k8s-pv.motor.com/sce_web/index.html前端识别到跳转的如下地址后…

微服务介绍2

1 搭建项目 1.1 父项目的搭建 1.2 子项目的搭建 2 项目展示 1 搭建项目 1.1 父项目的搭建 步骤&#xff1a; 1 选择maven项目作为父项目&#xff0c;修改为1.8之后直接点击next 2 定义父项目的名称&#xff0c;修改Artifct Coordinates ---> GroupId 然后点击finsh就可以啦…