手把手教创建第一个Dubbo项目

本文阅读 4 分钟
首页 代码,Java 正文

        在上一篇博客《初识微服务框架——Dubbo》中提到Dubbo组件之间调用的关系,有4个重要的组件,提供者(Provider)、消费者(Consumer)、注册中心(Zookeeper)和服务监控(Monitor),注册中心、服务监控不需要我们去创建,dubbo自身提供的,我们要做的就是创建一个提供者项目和消费者项目。

        第一步:         在cmd上打开dubbo服务以及admin可视化管理程序。         第二步:         我们可以把公共的代码部分(比如实体类、接口)写到一个maven项目中,然后打成jar包。

package cn.dubbo.pojo;

import java.io.Serializable;

/** * 实体类一定要实现Serializable接口,表示这个类是可被序列化的 */
public class User implements Serializable { 
    private Integer id;
    private String name;
    private Integer age;
}
package cn.dubbo.service;

import cn.dubbo.pojo.User;

import java.util.List;

/** * 用户服务的接口 */
public interface UserService { 
    /** * 获取所有的用户信息 * @return */
    List<User> getUserList();
}

        第三步:创建提供者项目

        1,创建一个SpringBoot项目,选择web依赖。 img img         2,导入相关的依赖

<!--        加入dubbo依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
<!--        加入zookeeper客户端依赖-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
            <!-- 排除-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--        刚刚自己打的jar包-->
        <dependency>
            <groupId>cn.mall</groupId>
            <artifactId>mall-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        3,编写application.yml配置文件

server:
  port: 8081
dubbo:
  application:
    name: dubbo-user-provider       #暴露在注册中心上接口的名字
  registry:
    address: zookeeper://127.0.0.1:2181     #注册中心的地址

        4,编写实体类以及需要在注册中心中暴露的接口

package cn.dubbo.service;

import cn.dubbo.pojo.User;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/** * 编写暴露在外面的接口 */
@Service            //这里导包的时候要看好,是dubbo包下的,不是Spring包下的
@Component          //表示交给spring托管,是一个组件
public class UserServiceImpl implements UserService{ 
    /** * 获取所有的用户信息 * * @return */
    @Override
    public List<User> getUserList() { 
        List<User> list = new ArrayList<>();
        list.add(new User(1,"梦梦",20));
        list.add(new User(2,"mengmeng",20));
        return list;
    }
}

        5,在启动类上加上@EnableDubbo注解 img

        6,启动项目,然后浏览器里打开可视化管理工具并且刷新,这是就会看到提供者这里多了一行数据,点击ip之后,会显示暴露的接口的相关信息。 img img

        第三步:创建消费者项目

        1,创建一个springboot项目,并且导入web依赖。 img         2,导入依赖。跟上面的依赖一样。

        3,编写配置文件

server:
  port: 8082
dubbo:
  application:
    name: dubbo-order-consumer    #暴露在注册中心上接口的名字
  registry:
    address: zookeeper://127.0.0.1:2181     #注册中心的地址

        4,编写订阅注册中心提供者暴露的接口的代码

package cn.dubbo.service;
import cn.mall.pojo.User;
import cn.mall.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

import java.util.List;

@Service        //这里是spring的注解,就是一个业务层代码
public class OrderServiceImpl implements OrderService { 
    //调用远程的UserService的实现类
    @Reference
    private UserService userService;
    @Override
    public List<User> getUserList(Integer id) { 
        return userService.getUserList();
    }
}

        5,编写controller测试

package cn.dubbo;

import cn.dubbo.service.OrderService;
import cn.mall.pojo.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class UserController { 
    @Resource
    private OrderService orderService;
    @RequestMapping("/getUser/{id}")
    public List<User> getUserList(@PathVariable("id") Integer id){ 
        return orderService.getUserList(id);
    }
}

        6,在启动类上加入@EnableDubbo注解 img

        7,启动项目,此时会发现消费者也会出现一行数据,点开是消费者远程调用提供者暴露接口的信息。 img img

        当然,也可以在浏览器中输入项目的路径,测试一个controller是否有返回值 img         此时,我们的第一个基础的dubbo项目就已经创建好了,通过上面能够看到服务的调用者与消费者之间是通过RPC来通信的。

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_46540738/article/details/119809797
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复