Springboot+dubbo案例

最新推荐文章于 2025-05-07 11:19:37 发布
ldtkCoder 最新推荐文章于 2025-05-07 11:19:37 发布
阅读量2.1k 收藏 3
点赞数 1
CC 4.0 BY-SA版权
分类专栏: springboot 文章标签: springboot maven zookeeper
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/ldtkldtk/article/details/78270931
springboot 专栏收录该内容
1 篇文章
订阅专栏
本文详细介绍了一个使用SpringBoot和Dubbo搭建的SOA服务框架案例。案例包含服务提供者和消费者两端,通过ZooKeeper作为注册中心实现服务发现与调用。文中展示了项目的结构、依赖配置及核心代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本案例中有俩部分Server和client的两个项目

1.springboot-dubbo-server服务提供者项目

1.项目的结构图

Server项目结构图.png

2.pom.xml的maven依赖
<?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>springboot</groupId>
    <artifactId>springboot-dubbo-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-dubbo 服务端:: 整合 Dubbo/ZooKeeper 详解 SOA 案例</name>
​
    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
​
    <properties>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
    </properties>
​
    <dependencies>
​
        <!-- Spring Boot Dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>${dubbo-spring-boot}</version>
        </dependency>
​
        <!-- Spring Boot Web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
​
        <!-- Spring Boot Test 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
​
        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>
3.application.properties

## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
## Dubbo 服务对象的注册中心zookeeper的地址和端口
spring.dubbo.registry.address=zookeeper://192.168.182.3:2181
## 用Dubbo协议在20880端口暴露服务
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
## 包扫描范围
spring.dubbo.scan=org.spring.springboot.dubbo
4.ServerApplication.java,项目启动入口程序

package org.spring.springboot;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
/**
 * Spring Boot 应用启动类
 *
 * Created by bysocket on 16/4/26.
 */
// Spring Boot 应用的标识
@SpringBootApplication
public class ServerApplication {
​
    public static void main(String[] args) {
        // 程序启动入口
        // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
        SpringApplication.run(ServerApplication.class,args);
    }
}
5.实体对象City

package org.spring.springboot.domain;
​
import java.io.Serializable;
​
/**
 * 城市实体类
 *
 * Created by bysocket on 07/02/2017.
 */
public class City implements Serializable {
​
    private static final long serialVersionUID = -1L;
​
    /**
     * 城市编号
     */
    private Long id;
​
    /**
     * 省份编号
     */
    private Long provinceId;
​
    /**
     * 城市名称
     */
    private String cityName;
​
    /**
     * 描述
     */
    private String description;
​
    public City() {
    }
​
    public City(Long id, Long provinceId, String cityName, String description) {
        this.id = id;
        this.provinceId = provinceId;
        this.cityName = cityName;
        this.description = description;
    }
​
    public Long getId() {
        return id;
    }
​
    public void setId(Long id) {
        this.id = id;
    }
​
    public Long getProvinceId() {
        return provinceId;
    }
​
    public void setProvinceId(Long provinceId) {
        this.provinceId = provinceId;
    }
​
    public String getCityName() {
        return cityName;
    }
​
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
​
    public String getDescription() {
        return description;
    }
​
    public void setDescription(String description) {
        this.description = description;
    }
}
6.dubboService的接口,客户端也需要一份此接口以便接收服务对象

package org.spring.springboot.dubbo;
​
import org.spring.springboot.domain.City;
​
/**
 * 城市业务 Dubbo 服务层
 *
 * Created by bysocket on 28/02/2017.
 */
public interface CityDubboService {
​
    /**
     * 根据城市名称,查询城市信息
     * @param cityName
     */
    City findCityByName(String cityName);
}
7.发布出来的service对象,此对象通过Dubbo注册到zookeeper服务注册中心以便其他的项目获取此服务对象

package org.spring.springboot.dubbo.impl;
​
import com.alibaba.dubbo.config.annotation.Service;
import org.spring.springboot.domain.City;
import org.spring.springboot.dubbo.CityDubboService;
import org.springframework.beans.factory.annotation.Autowired;
​
/**
 * 城市业务 Dubbo 服务层实现层
 *
 * Created by bysocket on 28/02/2017.
 */
// 注册为 Dubbo 服务
@Service(version = "1.0.0")
public class CityDubboServiceImpl implements CityDubboService {
​
    public City findCityByName(String cityName) {
        return new City(1L,2L,cityName,"是我的故乡");
    }
}

2.springboot-dubbo-client服务消费者项目

1.项目的结构图

client项目结构图.png

2.pom.xml的maven依赖

<?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>springboot</groupId>
    <artifactId>springboot-dubbo-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-dubbo 客户端:: 整合 Dubbo/ZooKeeper 详解 SOA 案例</name>
​
    <!-- Spring Boot 启动父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
​
    <properties>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
    </properties>
​
    <dependencies>
​
        <!-- Spring Boot Dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>${dubbo-spring-boot}</version>
        </dependency>
​
        <!-- Spring Boot Web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
​
        <!-- Spring Boot Test 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
​
        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
​
    </dependencies>
</project>
3.application.properties

## 避免和 server 工程端口冲突
server.port=8082
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
## Dubbo 服务对象的注册中心zookeeper的地址和端口
spring.dubbo.registry.address=zookeeper://192.168.182.3:2181
##  服务对象的被注入的包扫描范围
spring.dubbo.scan=org.spring.springboot

4.ClientApplication.java项目启动入口

package org.spring.springboot;
​
import org.spring.springboot.dubbo.CityDubboConsumerService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
​
/**
 * Spring Boot 应用启动类
 *
 * Created by bysocket on 16/4/26.
 */
// Spring Boot 应用的标识
@SpringBootApplication
public class ClientApplication {
​
    public static void main(String[] args) {
        // 程序启动入口
        // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
        ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);
        //CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);
        //cityService.printCity();
    }
}
5.实体对象City和Server项目保持一样
6.CityDubboService.java服务对象的接口也保持和Server项目一致
7.CityDubboConsumerService.java是一个调用服务的测试类(可以不理会)

package org.spring.springboot.dubbo;
​
import com.alibaba.dubbo.config.annotation.Reference;
import org.spring.springboot.domain.City;
import org.springframework.stereotype.Component;
​
/**
 * 城市 Dubbo 服务消费者
 *
 * Created by bysocket on 28/02/2017.
 */
@Component
public class CityDubboConsumerService {
​
    //自动注入服务对象(与包扫描相关)
    @Reference(version = "1.0.0")
    CityDubboService cityDubboService;
​
    public String printCity(String cityName) {
        //String cityName="温岭";
        City city = cityDubboService.findCityByName(cityName);
        return city.toString();
    }
}
8.CityController.java与前端交互的action

package org.spring.springboot.controller;
​
import org.spring.springboot.domain.City;
import org.spring.springboot.dubbo.CityDubboService;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
​
import com.alibaba.dubbo.config.annotation.Reference;
​
@Controller
public class CityController {
    
    //自动注入服务对象(与包扫描相关)
    @Reference(version = "1.0.0")
    CityDubboService cityDubboService;
    /*@Autowired
    private CityDubboConsumerService cityDubboConsumerService;*/
​
    @RequestMapping("/")
    @ResponseBody
    public String index(){
        return "hello,springboot";
    }
    
    @RequestMapping("/getCity")
    @ResponseBody
    public String getCity(){
        //String city = cityDubboConsumerService.printCity("赣州");
        City city = cityDubboService.findCityByName("赣州");
        return city.getCityName()+city.getDescription();
    }
    
}

3.先启动zookeeper服务器,然后再启动springboot-dubbo-Server项目,再启动Springboot-dubbo-client项目.

确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
ldtkCoder
关注 关注
  • 1
    点赞
  • 踩
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
专栏目录
springboot+dubbo完整项目案例
06-11
该项目代码,是我自己整理的一套springboot+dubbo开发的一个案例,基本的生产者消费者注册中心都已经开发好了,其中dubbo-admin需要自行打包运行
springboot + dubbo项目实例
05-11
maven集成了大部分目前主流的开发框架,运用阿里的公共开发库地址,启动springboot应用,就可以进行dubbo进行远程调用。支持maven打成war包,可作为系统开发的原形。
参与评论 您还未登录,请先 登录 后发表或查看评论
springboot-dubbo例子
lucky的专栏
10-17 155
server: ##端口号 server.port=8880 ## Dubbo配置 spring.dubbo.application.name=dubbo_server spring.dubbo.registry.address=zookeeper://192.168.198.200:2181?backup=192.168.198.201:2181,192.168.198.202:2181 ...
SpringBoot与Dubbo纯注解整合实战指南
最新发布
weixin_36296444的博客
05-07 855
SpringBoot是由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建以及开发过程。它使用了特定的方式来配置Spring,使得开发者能够快速启动和运行Spring应用程序。SpringBoot的核心优势在于其自动配置机制和起步依赖,前者能够智能地匹配并自动配置Spring和第三方库,而后者则允许以最少的配置来添加依赖项。// 示例:SpringBoot的基本结构在上述代码中,注解标记了一个类作为REST控制器,启动注解组合了和。
dubbo的springboot集成
M先生的博客
01-09 1913
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
spring boot dubbo 简单例子
王鹏的专栏
07-24 5074
spring boot dubbo demo首先spring boot简化了spring的配置,方便使用,写一下spring boot dubbo 的整合的文章。先下载zookeeper,然后解压就行。在这个目录,双击zkServer.cmd就行。linux的用命令行./zkServer.sh start 上代码前,介绍一下dubbo DUBBO是一个分布式服务框架,致力于提供高性能和透明化
最简单的Dubbo案例之二:SpringBoot + dubbo 无zookeeper方式点对点直连
10-13
本项目只适合dubbo入门学习者,高手请不要浪费金钱;...本项目技术栈 springboot, dubbo ,无 zookeeper 本项目旨在提供最单纯的 dubbo 服务提供者 和消费者的点对点直连,而摒弃任何多余技术对dubbo直连的理解
springboot +mybatis+dubbo案例
10-25
在本项目中,我们探索的是一个整合了SpringBoot、MyBatis和Dubbo的实战案例。这个案例旨在帮助开发者理解如何在实际开发中有效地利用这三个技术栈,构建高性能、高可扩展性的微服务架构。 首先,SpringBoot是Spring...
Springboot + Mybatis+Dubbo+Zookeeper+nginx+redis+HTML.docx
06-24
综上所述,《Springboot + Mybatis+Dubbo+Zookeeper+nginx+redis+HTML.docx》文档不仅介绍了一套完整的微服务架构技术栈,还提供了具体的实践案例和技术选型指导,对于想要深入了解并实践该技术栈的开发者来说,是一...
SpringBoot整合Dubbo案例
06-14
首先,我们来看标题"SpringBoot整合Dubbo案例",这暗示我们需要在SpringBoot项目中引入Dubbo的服务治理功能。SpringBoot的优势在于其自动配置和起步驱动开发的理念,使得开发者无需繁琐的XML配置,即可快速构建应用...
Springboot 整合dubbo小案例
一名java小白的求知之路的博客
08-13 2011
Springboot 整合dubbo小案例 最近在看dubbo的一些案例,发现dubbo作为一个分布式的SOA服务治理框架,与普通的项目相比,优势多了很多,springboot作为快速构建微服务的王牌框架,我感觉它对于整个spring框架的封装非常好,对于快速构建一个spring程序来说,让我们更加注重于代码的编写,而框架帮你把需要的配置变成了一条龙服务,在Dubbo Spring Boot 工...
idea开发的springboot+dubbo+zookeeper的简单案例,下载即可调试
12-27
采用idea17,jdk8,开发的springboot+zookeeper+dubbo的简单案例,配置自己的注册中心即可运行测试,直接访问http://localhost:8081/index。
springboot 调用dubbo实例
06-01
spring boot 调用dubbo实例,可以运行,需要安装dubbo服务器。
dubbo+spring+springboot简单小案例
04-08
不同服务之间或者多服务之间调用接口的场景实际中会经常遇到,目前市面上解决该问题比较流行的两大框架为dubbo和springcloud, 这里是一个简单的dubbo入门的案例,分为两个小案例一个和spring和结合案例,另一个是和springboot结合的案例,
springboot整合dubbo+zookeeper案例
12-08
包括案例代码dubbo-demo-parent,apache-tomcat-8.5.60,apache-zookeeper-3.5.8-bin,dubbo-admin-2.5.10.war
springboot+dubbo 入门案例
520_LH
11-30 336
   1  入门案例      父工程的xml文件 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem...
SpringBoot整合Dubbo简单示例
qq_40210262的博客
11-11 326
4.配置文件application.yml。返回:“xx”,你好!
SpringBoot——SpringBoot集成Dubbo
贝尔摩德苦艾酒
05-29 8641
SpringBoot——SpringBoot集成Dubbo
springboot集成dubbo实例
ludkjava的博客
11-28 1034
简单搭建springboot集成dubbo项目
springboot+dubbo实战案例教程
标题“springboot+dubbo完整项目案例”揭示了本文档是一个使用Spring Boot框架与Dubbo分布式服务框架相结合的实际案例。Spring Boot是基于Spring的一个模块,它能帮助开发者快速、高效地创建独立的、生产级别的基于...
ldtkCoder

博客等级

码龄8年
10
原创
25
点赞
73
收藏
15
粉丝
关注
私信

热门文章

  • POI 出现的问题: org.apache.commons.collections4.ListValuedMap 13987
  • 高德地图路线规划-获取校车行驶的最优路线算法 4938
  • eclipse如何为java项目生成API文档、JavaDoc 4025
  • 带权重的随机算法的快速实现 3507
  • 高德API 点击地图弹出信息窗体显示经纬度坐标以及地址 2895

分类专栏

  • git
    1篇
  • 文档笔记
    4篇
  • springboot
    1篇
  • excel导入
    1篇
  • 高德API
    2篇

展开全部 收起

上一篇:
zookeeper安装
下一篇:
带权重的随机算法的快速实现

最新评论

  • POI 出现的问题: org.apache.commons.collections4.ListValuedMap

    残忍恶汉!: 兄弟你说的太对了,按照你的吧4-4.0 改成4-4.1.就ok了

  • easyui 实现只有年月的选择器

    cenghejian0487: 你指望一个抄文章得告诉你啥

  • easyui 实现只有年月的选择器

    cenghejian0487: 你指望一个抄文章得告诉你啥

  • easyui 实现只有年月的选择器

     IqOahz: 博主您好, 这块我不太懂, 请教一下. IE8不兼容有办法吗, 说什么 'span' 为空或不是对象. 其他浏览器包括IE11都可以

  • 高德地图路线规划-获取校车行驶的最优路线算法

    weixin_51643078: 该算法对内存要求高吗

大家在看

  • 【计算机毕业设计】基于Springboot的园区停车管理系统+LW
  • Thread.sleep(0) 到底有啥用?看完这个“咖啡店等朋友”的故事,面试官都想请你喝一杯!
  • Linux系统环境编程之网络编程
  • 【计算机毕业设计】基于Springboot的舞蹈网站+LW
  • 分布式系统的一致性模型:核心算法与工程实践 337

最新文章

  • Java实现大文件分片上传,并暂存到Mysql数据库
  • Git 使用码云的远程仓库管理项目代码
  • 高德地图路线规划-获取校车行驶的最优路线算法
2024年1篇
2020年1篇
2019年2篇
2018年5篇
2017年3篇

目录

展开全部

收起

目录

展开全部

收起

上一篇:
zookeeper安装
下一篇:
带权重的随机算法的快速实现

分类专栏

  • git
    1篇
  • 文档笔记
    4篇
  • springboot
    1篇
  • excel导入
    1篇
  • 高德API
    2篇

展开全部 收起

目录

评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值