基于SpringBoot注解搭建Dubbo详细Demo

自己玩的Demo结构:

API : 存放暴露的接口与实体模型POJO

Consumer:服务消费方

Provider : 服务提供方

注册中心:Zookeeper  --(对于新手来说,去下载一个Dubbo-admin工程,可以看到服务是否有注册到zookeeper上);

先来配置Api工程中的pom.xml吧:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>DubboProject</artifactId>
        <groupId>com.alen.dubbotest</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dubbo-api</artifactId>
    <!-- 版本控制 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <!--SpringBoot启动器 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!--maven插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

建立实体类; 建表SQL我就不帖了,可以自行创建一个User表;

注:--最好序列化一下哦

package com.st.sang.enetiry;

import lombok.Data;

import java.io.Serializable;

/**
 * @Author hjl
 * @Date 2019/12/30
 **/
public class User implements Serializable {

    private static final long serialVersionUID = -1688765204850364609L;

    private Integer id;
    private String userName;
    private String passWord;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

定义一个暴露的接口供其他服务访问

package com.st.sang.service;

import com.st.sang.enetiry.User;

import java.util.List;

public interface UserService {
    List<User> getAllUser();
}

--------------------------------------------------------api分割线---------------------------------------------------------------

接下来该服务提供方了,先看看结构;

pom.xml:

这里注意一下: 引入的Dubbo包貌似不能太旧,否则还没加入一些注解,如:

@DubboComponentScan 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下如何在Spring Boot中使用Dubbo和Nacos搭建RPC框架。 Dubbo是一个高性能、轻量级的开源Java RPC框架,可以提供远程方法调用和服务发现功能。Nacos是阿里巴巴开源的一个服务发现和配置管理平台,也是Dubbo官方推荐的服务注册中心和配置中心。 下面是具体的步骤: 1. 在pom.xml中添加Dubbo和Nacos的依赖: ```xml <!-- Dubbo依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!-- Nacos依赖 --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.2.1</version> </dependency> ``` 2. 在application.properties中配置Dubbo和Nacos: ```properties # Dubbo配置 dubbo.application.name=consumer dubbo.registry.address=nacos://localhost:8848 dubbo.registry.username=nacos dubbo.registry.password=nacos # Nacos配置 spring.cloud.nacos.discovery.server-addr=localhost:8848 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos ``` 3. 创建Dubbo服务提供者: ```java @Service public class UserServiceImpl implements UserService { @Override public User getById(Long id) { // 实现自己的业务逻辑 return new User(id, "张三"); } } ``` 4. 在Dubbo服务提供者中配置Dubbo: ```java @Configuration public class DubboProviderConfig { @Value("${dubbo.application.name}") private String appName; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.registry.username}") private String registryUsername; @Value("${dubbo.registry.password}") private String registryPassword; @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(appName); return applicationConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress(registryAddress); registryConfig.setUsername(registryUsername); registryConfig.setPassword(registryPassword); return registryConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } @Bean public ProviderConfig providerConfig() { ProviderConfig providerConfig = new ProviderConfig(); providerConfig.setTimeout(5000); return providerConfig; } } ``` 5. 创建Dubbo服务消费者: ```java @RestController public class UserController { @Reference(version = "1.0.0") private UserService userService; @GetMapping("/user/{id}") public User getUserById(@PathVariable Long id) { return userService.getById(id); } } ``` 6. 在Dubbo服务消费者中配置Dubbo和Nacos: ```java @Configuration public class DubboConsumerConfig { @Value("${dubbo.application.name}") private String appName; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.registry.username}") private String registryUsername; @Value("${dubbo.registry.password}") private String registryPassword; @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(appName); return applicationConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress(registryAddress); registryConfig.setUsername(registryUsername); registryConfig.setPassword(registryPassword); return registryConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } @Bean public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(5000); return consumerConfig; } @Bean public NacosDiscoveryProperties nacosDiscoveryProperties() { NacosDiscoveryProperties nacosDiscoveryProperties = new NacosDiscoveryProperties(); nacosDiscoveryProperties.setServerAddr("localhost:8848"); nacosDiscoveryProperties.setUsername("nacos"); nacosDiscoveryProperties.setPassword("nacos"); return nacosDiscoveryProperties; } @Bean public NacosServiceDiscovery nacosServiceDiscovery() { return new NacosServiceDiscovery(); } @Bean public ReferenceConfig<UserService> userServiceReferenceConfig() { ReferenceConfig<UserService> referenceConfig = new ReferenceConfig<>(); referenceConfig.setInterface(UserService.class); referenceConfig.setVersion("1.0.0"); referenceConfig.setCluster("failfast"); return referenceConfig; } @Bean public DubboBootstrap dubboBootstrap() { return DubboBootstrap.getInstance(); } } ``` 这样,我们就成功地在Spring Boot中使用Dubbo和Nacos搭建了RPC框架。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值