Spring Boot 快速整合 Dubbo + Nacos

本文章基于dubbo-spring-boot-starter最新依赖,快速搭建spring boot dubbo工程,采用nacos作为注册中心。

Spring boot 版本:3.2.5

 java 版本:17

项目结构

1、主要依赖

        <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.3.0-beta.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>3.3.0-beta.2</version>
        </dependency>

2、创建公共模块comment-interface

可以理解为服务提供端和服务消费端的桥梁(服务端和消费端需要同时引入该模块),当消费端调用该接口时,通过注册中心在服务提供端就可以找到该接口的实现类,进而实现服务间通讯。

public interface HelloWorldDemoApi {
    public String helloWorld(String string);
}

3、服务提供者

(1)在pom中引入该模块

<dependency>
  <groupId>com.example</groupId>
  <artifactId>common-interface</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>

(2)实现HelloWorldDemoApi接口,使用注解@DubboService注解标注为服务提供者

@DubboService
@Service
@Slf4j
public class DubboHelloWorldDemoApiImpl implements HelloWorldDemoApi {
    @Override
    public String helloWorld(String string){
        log.info(string);
        return string + " Hello World!";
    }
}

 (3)在启动类上加上@EnableDubbo注解,启动Dubbo自动注册功能

@SpringBootApplication
@EnableDubbo
public class CloudProviderApplication {

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

}

(4)配置application.properties 

spring.application.name=cloud-provider
server.port=8081

dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.registry.username=nacos
dubbo.registry.password=nacos

#是否启动 qos 默认 true
# 能够列出来该实例服务提供者与调用者状态
dubbo.application.qosEnable=true
# 启动 qos 绑定的端口 默认 22222
dubbo.application.qosPort=22222
# 是否允许远程访问 默认是 false
dubbo.application.qosAcceptForeignIp=false

4、服务消费方

(1)在pom中引入该模块

<dependency>
  <groupId>com.example</groupId>
  <artifactId>common-interface</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>

(2)注入HelloWorldDemoApi服务,使用注解@DubboReference注解标注为服务调用方

@RestController
public class TestController{
    @DubboReference
    private HelloWorldDemoApi api;

    @GetMapping("/test")
    public String getResult(){
        return api.helloWorld("tom");
    }
}

 (3)在启动类上加上@EnableDubbo注解,启动Dubbo自动注册功能


@SpringBootApplication
@EnableDubbo
public class CloudConsumerApplication {

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

}

(4)配置application.properties  

spring.application.name=cloud-consumer
server.port=8082

dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.registry.username=nacos
dubbo.registry.password=nacos
#是否启动 qos 默认 true
# 能够列出来该实例服务提供者与调用者状态
dubbo.application.qosEnable=true
# 启动 qos 绑定的端口 默认 22222
# 服务提供者已经把该端口占用了,那么服务消费者就不能使用该端口了,需要换一下
dubbo.application.qosPort=33333
# 是否允许远程访问 默认是 false
dubbo.application.qosAcceptForeignIp=false

5、测试

启动提供端服务和消费端服务,在浏览器中输入http://127.0.0.1:8082/test

输出:

 Tom Hello World!

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是Spring Cloud Alibaba + Spring Boot + Dubbo + Nacos + Mybatis Plus + MySQL 项目搭建步骤: 1. 创建一个Spring Boot项目,并添加以下依赖: ```xml <!--Spring Boot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Dubbo依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version>2.2.1.RELEASE</version> </dependency> <!--Nacos依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> <!--Mybatis Plus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency> <!--MySQL依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 2. 配置application.yml文件,添加以下内容: ```yaml spring: application: name: service-provider # 服务名称 datasource: url: jdbc:mysql://localhost:3306/db_example # 数据库URL username: root # 数据库用户名 password: root # 数据库密码 driver-class-name: com.mysql.cj.jdbc.Driver # 数据库驱动 mybatis-plus: mapper-locations: classpath:mapper/*.xml # Mybatis Plus的mapper文件路径 dubbo: application: name: dubbo-service-provider # Dubbo应用名称 registry: address: nacos://localhost:8848 # Nacos注册中心地址 protocol: name: dubbo # Dubbo协议名称 port: 20880 # Dubbo协议端口号 ``` 3. 创建一个数据模型类,例如: ```java @Data public class User { private Long id; private String username; private String password; private String email; } ``` 4. 创建一个Mapper类,例如: ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 创建一个Service类,例如: ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { } ``` 6. 创建一个Controller类,例如: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getById(id); } } ``` 7. 在Nacos控制台中添加服务提供者的配置信息。 8. 启动服务提供者,并在Nacos控制台中查看服务是否注册成功。 9. 创建一个服务消费者项目,并添加以下依赖: ```xml <!--Spring Boot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Dubbo依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version>2.2.1.RELEASE</version> </dependency> <!--Nacos依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 10. 配置application.yml文件,添加以下内容: ```yaml spring: application: name: service-consumer # 服务名称 dubbo: application: name: dubbo-service-consumer # Dubbo应用名称 registry: address: nacos://localhost:8848 # Nacos注册中心地址 ``` 11. 创建一个Service类,例如: ```java @Service public class UserServiceImpl implements UserService { @Reference private UserService userService; @Override public User getUser(Long id) { return userService.getById(id); } } ``` 12. 创建一个Controller类,例如: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getUser(id); } } ``` 13. 启动服务消费者,访问http://localhost:8080/user/{id},查看服务是否调用成功。 以上就是Spring Cloud Alibaba + Spring Boot + Dubbo + Nacos + Mybatis Plus + MySQL项目搭建步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值