SpringBoot+Dubbo的注解方式整合实例

    科技2024-04-15  74

    1.在linux中各个包的bin目录下启动zookeeper注册中心,monitor监控中心和tomcat,命令如下: (1)zookeeper:./zkServer.sh start (2) monitor:./server.sh start (3)tomcat:./startup.sh

    SpringBoot-dubbo-provider配置: 2.在ideal中创建springboot-dubbo-provider的spring包, 在provider的pom文件中引入如下依赖:

    <dependency> <groupId>com.qiuzelin</groupId> <artifactId>dubbo-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>

    其中,依赖为dubbo的接口依赖和springboot整合dubbo的依赖。 3.配置provider的application.yml文件 dubbo的provider应用名,注册中心名和地址,以及dubbo所用端口号。

    dubbo: application: name: springboot-dubbo-provider registry: protocol: zookeeper address: 192.168.157.128:2181 protocol: port: 28801

    4.在main方法的类中加入@EnableDubbo注解:

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

    5.创建serviceimpl实现自interface接口(在本博客Dubbo分布式框架实战中的 interface接口):

    package com.qiuzelin.springbootdubboprovider.service; import com.alibaba.dubbo.config.annotation.Service; import com.qiuzelin.service.IUserService; import org.springframework.stereotype.Component; /** * Created with IntelliJ IDEA. * * @Auther: qiuzelin * @Date: 2020/09/30/11:05 * @Description: */ @Component //表明这是spring组件,受到spring管理,因为下面的service是dubbo的service @Service //dubbo的service,不是spring的service,用来发布服务 public class UserServiceImpl implements IUserService { @Override public String hello() { return "springboot+dubbo"; } }

    注意:此处@Service注解为dubbo的包,用@Component来代替原spring的@Service注解,用来实现Spring管理。

    SpringBoot-dubbo-consumer配置: 6.配置consumer的pom文件: 加入dubbo的接口依赖和阿里巴巴旗下dubbo对springboot的依赖包

    <dependency> <groupId>com.qiuzelin</groupId> <artifactId>dubbo-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>

    7.配置comsumer的application.yml文件: dubbo的consumer应用名称,注册中心名和地址等。

    dubbo: application: name: consumer-boot-anotation registry: protocol: zookeeper address: 192.168.157.128:2181

    8.同样的,在main方法的类中加入@EnableDubbo注解:

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

    9.在consumer的测试类中进行测试:

    package com.qiuzelin.springbootdubboconsumer; import com.alibaba.dubbo.config.annotation.Reference; import com.qiuzelin.service.IUserService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class SpringbootDubboConsumerApplicationTests { @Reference private IUserService iUserService; @Test void contextLoads() { System.out.println(iUserService.hello()); System.in.read(); } }

    其中@Reference用来注入分布式的远程服务对象,要配合dubbo配置使用。

    10.运行provider的main方法和consumer的test方法: 登录dubbo的虚拟机发布地址192.168.157.128:8088后发现后台服务有服务提供者,服务消费者和监控中心: 其中: 监控中心地址来自虚拟机地址(192.168.157.128:7070), 服务提供者(192.168.157.1:28801)和服务消费者(192.168.157.1)地址来自本机地址。

    Processed: 0.011, SQL: 8