0
点赞
收藏
分享

微信扫一扫

SpringBoot + Dubbo + Nacos

青鸾惊鸿 2023-08-16 阅读 12

写一个小项目来练习通过Dubbo远程调用

架构

  1. SpringBoot
  2. Spring Cloud
  3. Spring Cloud Alibaba
  4. Dubbo
  5. Nacos

依赖

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


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.0.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>3.0.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>3.0.2.1</version>
        </dependency>

注意Spring Boot 与 Spring Cloud 、 Cloud Alibaba的依赖版本 Spring Boot 2.6.3 、Spring Cloud 2021.0.1.0 、 Spring Cloud Alibaba 2021.0.1

编写API层

Spring-boot-dubbo-demo-interface

package com.xin.demo.service;

public interface IUserService {
    String sayHi (String name);
}

编写提供者

Spring-boot-demo-provider

提供者需要依赖API层实现其方法

引入API依赖

	<dependency>
            <groupId>com.xin</groupId>
            <artifactId>spring-dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

实现API接口 为实现类添加 @DubboService注解

@DubboService
public class IUserImpl implements IUserService {

    @Override
    public String sayHi(String name) {
        return "你好, " + name;
    }
}

编写启动类 添加 @EnableDubboConfig注解

@SpringBootApplication
@EnableDubboConfig
public class ProviderApplication {

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

编写配置文件

#  为项目起一个名字
spring.application.name=spring-dubbo-provider

# 为当前Dubbo暴露的接口起一个唯一标识
dubbo.application.id=spring-dubbo-provider
# 为当前服务存放在注册中心中起一个名字
dubbo.application.name=spring-dubbo-provider
# 注册中心地址
dubbo.registry.address=nacos://192.168.1.72:8848

# 以下提供者必须配置
# 暴露接口的协议
dubbo.protocol.name=dubbo
# 暴露接口的端口 
dubbo.protocol.port=20880

消费者

spring-dubbo-demo-consumer

需要引入提供者的依赖

   	<dependency>
            <groupId>com.xin</groupId>
            <artifactId>spring-dubbo-provider</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

编写Controller层 , 用@DubboReference引入消费者

@RestController
@RequestMapping("/user")
public class UserController {

    @DubboReference
    private IUserService userService;

    @GetMapping
    public String sayHi () {
        return userService.sayHi("zhangsan");
    }
}

编写启动类

@SpringBootApplication
@EnableDubboConfig
public class ConsumerApplication {

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

编写配置文件

spring.application.name=spring-dubbo-consumer
dubbo.application.id=spring-dubbo-consumer
dubbo.application.name=spring-dubbo-consumer

dubbo.registry.address=nacos://192.168.1.72:8848
server.port=9090
举报

相关推荐

0 条评论