spring注解方式整合Dubbo

系列文章目录



一、创建一个父工程项目

这里我们通过Spring Initializer 来帮我们构建一个spring-dubbo这个父项目,点击next

在这里插入图片描述

这里我们选择spring boot 的版本为2.3.12,这里我没有拉下来,所以我后面改成了2.3.2.RELEASE版本。

在这里插入图片描述

由于我们是通过spring-dubbo来做父项目,来帮我们做pom依赖管理,所以我们不需要这些无用目录

在这里插入图片描述

二、创建子模块(dubbo-api模块)

这里是和创建父模块一样的流程

在这里插入图片描述

这里也同样删除掉多余的文件目录,也删除掉springboot的启动类,因为这个模块主要是定义接口,实体,公共资源等,给dubbo服务调用双方依赖使用。

在这里插入图片描述

这里修改dubbo-apipom文件:

  1. 让其parent指向刚刚创建的父项目
    2.修改packaging方式为pom

在这里插入图片描述

这里修改spring-dubbopom文件:

  1. 改变了 packaging 方式为 pom
  2. 增加modules,注册了模块工程 dubbo-api

在这里插入图片描述

创建一个接口定义 -> DemoService

在这里插入图片描述

二、创建子模块(dubbo-provider模块)

这里和前面创建dubbo-api的流程一样,创建完后后删除多余的文件,然后修改dubbo-providerpom文件:

  1. 指定parent
  2. 设置打包类型为jar
  3. 导入spring web环境的依赖包,和dubbo自动装配的依赖包和接口定义的依赖包

在这里插入图片描述

pom中管理的模块增加dubbo-provider

在这里插入图片描述

dubbo-provider模块中创建DemoServiceImpl,实现了DemoService,并添加@Service注解,这个@Service注解是Dubbo提供的,标注了这个是一个Dubbo服务。

在这里插入图片描述

设置dubbo-provider的配置文件,设置如下配置:

  1. 指定应用名称
  2. 指定协议类型为dubbo
  3. 指定协议暴露端口,这里-1表示dubbo随机获取端口
  4. 设置注册中心的地址,这里我们用的是zk

在这里插入图片描述

然后在dubbo-provider的启动类上面加上@EnableDubbo注解,表示启用Dubbo服务。

在这里插入图片描述

三、创建子模块(dubbo-consumer模块)

创建流程和dubbo-provider一致,只是模块名称不一样,修改pom.xml也和provider一致,这里配置文件中除了应用名不一致,其他配置和provider一致。

在这里插入图片描述

这里我们新创建一个Task,然后通过 @Reference注解引入了DemoService,这里Task实现了CommandLineRunnerSpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法,在run方法中方法中我们会不断调用DemoService#sayHello方法,这里我们像调用本地方法一样调用。。

在这里插入图片描述

这里我们首先把Provider启动起来,

在这里插入图片描述

这里我们启动consumer的时候发现端口被占用了,因为我们没有指定端口,默认就是8080,刚刚provider启动就在8080,所以我们给consumer指定一个端口为8081,然后启动,这里在控制台我们可以发现远程调用成功。

在这里插入图片描述


总结

本节讲了Dubbo如何与spring集成,下一章我们会将spring整合dubbo的源码实现。

Spring Boot中整合Dubbo服务通常需要以下几个步骤: 1. **添加依赖**: 首先,你需要在项目的`pom.xml`文件中添加DubboSpring Boot的相关依赖。例如,如果你使用的是Spring Cloud Alibaba的Dubbo版本,可以添加如下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-dubbo</artifactId> </dependency> ``` 2. **配置Dubbo应用**: 在`application.properties`或`application.yml`中配置Dubbo服务的基本信息,如注册中心地址、端口等: ```properties dubbo.application.name=my-dubbo-service dubbo.registry.address=zk://localhost:2181 ``` 3. **创建Dubbo服务接口和实现**: 定义Dubbo服务接口,并在Spring Bean中实现它: ```java @Service("myService") public interface MyService { String sayHello(String name); } // 实现类 @Component public class MyServiceImpl implements MyService { @Override public String sayHello(String name) { return "Hello, " + name; } } ``` 4. **启用Dubbo扫描**: 在Spring Boot中启用Dubbo的自动扫描功能,以便Spring能够发现并管理你的Dubbo服务: ```java @EnableDubbo public class AppConfig { //... } ``` 5. **消费Dubbo服务**: 如果有其他模块需要消费这个Dubbo服务,可以通过Spring的@Autowired注解注入并调用服务方法: ```java @Autowired private MyService myService; public void callService() { String response = myService.sayHello("User"); System.out.println(response); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值