6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架,阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块,部署在不同的服务器上。若将公共模块集中部署在一台服务器上,可以方便其他服务器调用。因此,需要Dubbo。

此外参考Dubbo官方手册,Dubbo自己提供注册中心,需要在provider项目中配置文件里配置dubbo协议才能使用,目前主流的办法是使用zookeeper注册中心。

本案例提供三个模块演示springboot项目如何集成Dubbo
015_interface_api 公用模块

项目类型:maven java工程
描述:存放实体bean和业务接口
负责业务模块:Model,Service

016_springboot_provider :服务提供者

项目类型:SpringBoot web工程
描述:实现业务接口中的接口
负责业务模块:ServiceImpl,Mapper

017_consumer:服务消费者

项目类型:SpringBoot web工程
描述:处理从浏览器客户端发送的请求,就是 Controller 层
负责业务模块:Controller

目录

  • 015_interface_api
  • 016_springboot_provider
    • 1 导入额外的依赖
    • 2 实现stuServiceimpl
    • 3 配置application.properties文件
    • 4 @EnableDubbo注解 启动服务
  • 017_consumer
    • 1 导入额外依赖
    • 2 实现controller类 并启动
    • 3 配置application.properties文件
  • 启动项目步骤

015_interface_api

在这里插入图片描述
stu类

/*** Dubbo 实体 Bean 需实现 Serializable ,否则会报错*/
public class stu implements Serializable {private String name;private Integer age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "stu{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}
}

stuService

public interface stuService {stu queryStudent(Integer id);
}

016_springboot_provider

1 导入额外的依赖

在这里插入图片描述

 <!-- 1、导入项目015的依赖--><dependency><groupId>com.zjh</groupId><artifactId>015_interface_api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 2、导入Dubbo依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><!-- 3、导入Zookeeper依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>2.7.8</version><type>pom</type><!-- 禁用zookeeper的日志,因为Dubbo自己也携带了一个,多个日志重复--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency>

2 实现stuServiceimpl

//写此注解是为了确保注入到容器
@Service//@DubboService说明:使用dubbo的注解暴露服务,版本号自定义
@DubboService(interfaceClass = stuService.class, version = "1.0" )
public class stuServiceImpl implements stuService {@Overridepublic stu queryStudent(Integer id) {stu student = new stu();if( 1001 == id){student.setName("zjh");student.setAge(10);student.setSex("男");}return student;}
}

3 配置application.properties文件

# 配置服务名称 dubbo:application name="名称"
spring.application.name=stuservice-provider# 配置扫描的包,扫描的@DubboService
dubbo.scan.base-packages=com.zjh.service# 配置注册中心
dubbo.registry.address=zookeeper://localhost:2181

4 @EnableDubbo注解 启动服务

@SpringBootApplication
//启动Dubbo
@EnableDubbo
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}}

017_consumer

在这里插入图片描述

1 导入额外依赖

在provider依赖的基础上再加一个web依赖

<!-- 4、web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

2 实现controller类 并启动


@RestController
//消费者也启动Dubbo
@EnableDubbo
public class DubboController {//原本需要@ resource自动注入@DubboReference(interfaceClass = stuService.class, version = "1.0")private stuService stuservice;@RequestMapping("/dubbo/{stu_id}")public String HelloSubbo(@PathVariable("stu_id")Integer id){stu stu = stuservice.queryStudent(id);return "远程调用接口,获取对象:"+stu.toString();}}

3 配置application.properties文件

# dubbo服务命名 dubbo:application name="名称"
spring.application.name=stuservice-consumer# 注册中心
dubbo.registry.address=zookeeper://localhost:2181

启动项目步骤

  1. 启动安装的zookeeper服务
  2. 依次启动provider服务,consumer服务
  3. 输入localhost:8080/dubbo/id=1001

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB 的函数计算与作图

基本初等函数的输入系统运算与操作函数的输入函数值的计算1. 数值计算方式2. 符号计算方式2.1 函数&#xff1a;sym2.2 函数&#xff1a;syms 函数的作图1. 一般函数 yf(x) 的作图&#xff08;二维&#xff09;作图基本形式作多重线作图的线型和颜色作图的网格和标记、图例、字…

如何在SQL Server中实现Ungroup操作

概要 我们经常在SQL Server中使用group by语句配合聚合函数&#xff0c;对已有的数据进行分组统计。本文主要介绍一种分组的逆向操作&#xff0c;通过一个递归公式&#xff0c;实现ungroup操作。 代码和实现 我们看一个例子&#xff0c;输入数据如下&#xff0c;我们有一张产…

【新版系统架构】第十七章-通信系统架构设计理论与实践

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

【webrtc】ProcessThreadAttached

RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

Kubernetes基础知识点

k8s可以看做是一个集群操作系统&#xff0c;能够对容器进行调度和编排。 Kubernetes中的基本对象 pod 是k8s中的最小单位&#xff0c;一个pod封装一个或者多个容器&#xff0c;存储资源。 deployment 是对pod的服务化封装&#xff0c;可以包含一个或多个pod statefulset 为…

【面试题34】什么是MVC,为什么要使用它

文章目录 一、前言二、MVC介绍2.1 模型&#xff08;Model&#xff09;2.2 视图&#xff08;View&#xff09;2.3 控制器&#xff08;Controller&#xff09; 三、MVC模式的优点四、总结 一、前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域…

opencv4.7.0编译opencv-contrib-4.7.0以及CUDA

0、引言 最近工作中需要用到使用CUDA加速后的opencv进行传统算法的开发&#xff0c;在编程之前&#xff0c;需要先解决环境编译和lib库问题&#xff0c;本文就是记录自己编译opencv-4.7.0的全过程。 1、CUDA下载和安装 可参考我之前的博客WIN10安装配置TensorRT详解中的前几…

我爱学QT-QT信号和槽

1.给控件改名字 为了分析代码方便&#xff0c;我们要给控件改名字。要通俗易懂。 2.信号和槽 信号&#xff1a;信号就是指控件发出的特定的信号。 比如按钮的信号 槽&#xff1a;槽就是槽函数的意思&#xff0c;我们可以把槽函数绑定在某一个控件的信号上。 3.怎么关联信号…

【无公网IP端口映射】远程访问本地jupyter notebook服务

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

学无止境·MySQL⑦(索引和视图)

索引和视图练习 索引练习1、建立一个utf8编码的数据库test12、建立商品表goods和栏目表category3、删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段4、在 goods_name 列上加唯一性索引&#xff08;用alter table方式&#xff09;5、在 shop_price 列上加…

云之道知识付费V2小程序V3.1.1独立平台版安装使用教程

据播播资源了解&#xff0c;云之道知识付费小程序是一款专注于知识付费的小程序源码&#xff0c;为内容创业者、自媒体和教育培训机构提供全方位的互联网解决方案。 由播播资源小编全套安装云之道知识付费V2独立版系统&#xff0c;系统支持无限多开&#xff0c;相比上几版出现…