作者:Cott

来源:https://www.cnblogs.com/cott/p/12373043.html

1.选择ZooKeeper作为注册中心

在linux环境中使用docker安装ZooKeeper

//拉取zookeeper镜像docker pull zookeeper//启动zookeeperdocker run -d -p 2181:2181 -v /mysoft/zookeeper/data/:/data/ --name=zookeeper --privileged zookeeper

使用zookeeper-dev-ZooInspector客户端连接工具查看

2.创建maven项目统一声明接口,把所有接口提取到单独的项目,通过maven引入到其他项目

pom.xml

UserAddress.java

OrderService.java

package com.cott.gmail.service;import com.cott.gmail.bean.UserAddress;import java.util.List;public interface OrderService {    List initOrder(String id);}

UserService.java

package com.cott.gmail.service;import com.cott.gmail.bean.UserAddress;import java.util.List;public interface UserService {    List getAddress(String userId);}

3.创建生产者SpringBoot项目

pom.xml引入上文接口项目,引入dubbo依赖

实现UserService接口,作为dubbo的生产者需要用@Service注解,为了和spring的@Service注解区分,所以这里用的是@Component注解。更多springboot实战类文章:SpringBoot内容聚合

UserServiceImpl.java

package com.cott.gmail.bootuserserviceprovider.service.impl;import com.alibaba.dubbo.config.annotation.Service;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.UserService;import org.springframework.stereotype.Component;import java.util.Arrays;import java.util.List;@Service@Componentpublic class UserServiceImpl implements UserService {    @Override    public List getAddress(String uesrId) {        UserAddress userAddress1 = new UserAddress();        userAddress1.setId(1);        userAddress1.setUserAddress("1");        userAddress1.setUserId("1");        UserAddress userAddress2 = new UserAddress();        userAddress2.setId(2);        userAddress2.setUserAddress("2");        userAddress2.setUserId("2");        return Arrays.asList(userAddress1, userAddress2);    }}

主方法上用@EnableDubbo启用Dubbo注解

BootUserServiceProviderApplication.java

package com.cott.gmail.bootuserserviceprovider;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo@SpringBootApplicationpublic class BootUserServiceProviderApplication {    public static void main(String[] args) {        SpringApplication.run(BootUserServiceProviderApplication.class, args);    }}

配置文件指定应用名称,注册中心,服务协议和端口号

application.yml

dubbo:  application:    name: boot-user-service-provider  registry:    address: 192.168.200.128:2181    protocol: zookeeper  protocol:    name: dubbo    port: 20880

最后启动程序,在dubbo-admin中查看服务已经注册上去了。

4.创建消费者SpringBoot项目

pom.xml引入上文接口项目,引入dubbo依赖

实现OrderServiece接口,这里的@Service是spring的,这里使用@Reference注解声明UserService是通过远程调用注入进来

OrderServiceImpl.java

package com.cott.gmail.bootorderserviceconsumer.service.impl;import com.alibaba.dubbo.config.annotation.Reference;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.OrderService;import com.cott.gmail.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class OrderServiceImpl implements OrderService {    @Reference    UserService userService;    @Override    public List initOrder(String id) {        System.out.println("id= " + id);        List list = userService.getAddress("1");        for (UserAddress user : list        ) {            System.out.println(user.getUserAddress());        }        return list;    }}

OrderController.java

package com.cott.gmail.bootorderserviceconsumer.controller;import com.cott.gmail.bean.UserAddress;import com.cott.gmail.service.OrderService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;@Controllerpublic class OrderController {    @Autowired    OrderService orderService;    @ResponseBody    @GetMapping("/initOrder")    public List initOrder(@RequestParam(name = "id") String id) {        return orderService.initOrder(id);    }}

@EnableDubbo启用Dubbo注解

BootOrderServiceConsumerApplication.java

package com.cott.gmail.bootorderserviceconsumer;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo@SpringBootApplicationpublic class BootOrderServiceConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(BootOrderServiceConsumerApplication.class, args);    }}

配置文件中声明服务名称,注册中心,以及tomcat对外端口号

application.yml

dubbo:  application:    name: order-service-provider  registry:    address: 192.168.200.128:2181    protocol: zookeeperserver:  port: 8081

至此,一个简单的dubbo项目已经开发完成,下面启动消费者项目,在浏览器中输入url,得到返回结果

maven整合@data注解_SpringBoot 整合 Dubbo实践(实用文章)相关推荐

  1. maven整合@data注解_springboot整合spring Cache(redis)

    前言 前面有介绍过spring整合redis和redis的一些注意点,在实际开发中,spring cache方便简化的缓存操作的大部分内容.通过注解的方式实现缓存. 缓存抽象的核心是将缓存应用于Jav ...

  2. @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

    一.说明 SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更 ...

  3. @primary注解_springboot整合redis分别实现手动缓存和注解缓存

    一.前期准备 1.一个构建好的springboot系统2.下载redis安装包,去redis官网下载3.启动redis服务,windows下双击bin目录下的redis-service.exe 二.环 ...

  4. hibernate整合mysql配置文件_springboot整合hibernate配置

    添加sprngboot依赖<?xml  version="1.0" encoding="UTF-8"?> xmlns:xsi="http: ...

  5. spring注解方式整合Dubbo源码解析

    系列文章目录 前言 本节我们的Dubbo源码版本基于2.6.x 在前一章我们的整合案例中,我们有几个比较关键的步骤: 在启动类上标注了@EnableDubbo注解 在provider类上面标注了@Se ...

  6. springboot 引入jdbc驱动_SpringBoot整合jdbc、durid、mybatis详解,数据库的连接就是这么简单...

    SpringBoot底层统一采用SpringData处理数据库,这一章主要来讲一下SpringBoot整合jdbc.durid.mybatis的方式. (一)整合jdbc 整合jdbc主要有三步: 1 ...

  7. mybatisplus 结果_springboot整合mybatisPlus 乐观锁的实现

    1:乐观锁 1.1:乐观锁简介 乐观锁:总是假设最好的情况,在读取数据的使用不会发生并发问题,但在更新的时候比较原数据是否被其他线程发生了改变.主要通过通过版本号机制或CAS算法实现,适用于读多写少的 ...

  8. mybatis java类注解式_Spring整合Mybatis注解方式

    Spring整合Mybatis(注解方式) 环境准备 jar包: Spring所需依赖:spring-context.spring-aspects.aspectjrt.aspectjweaver.sp ...

  9. springboot公共模块打包_SpringBoot 整合篇

    来自:SimpleWu 链接:https://www.cnblogs.com/SimpleWu/p/9798146.html SpringBoot简介 Spring Boot是由Pivotal团队提供 ...

最新文章

  1. [学习笔记]最小圆覆盖
  2. getDimension/getDimensionPixelSize/getDimensionPixelOffset()
  3. 密码技术--证书及go语言生成自签证书
  4. 第013课_代码重定位
  5. 26个提升java性能需要注意的地方
  6. dotnet core调试docker下生成的dump文件
  7. Close window without alert
  8. 苹果怎么关闭系统自动更新_你知道怎么用安卓手机更省电吗?学会这样做,不难...
  9. 编址与存储相关计算(一)——软考之路
  10. 锐捷Linux版的下载和使用(福大客户端)
  11. oracle根据身份证计算年龄的方法
  12. iphone测试内存读取速度软件,iPhone7内存不同读写速度有差? 实测差距惊人!
  13. PHP数据加密的几种方式
  14. 数据结构:手把手教你写代码系列总结与说明
  15. 华为nova8和小米10青春版哪个好
  16. 微信小程序详解 php,微信小程序canvas基础详解
  17. Vue响应式原理(看这一篇就够了)
  18. python小白入门
  19. java无敌_12 款做Java后台管理系统的项目,超级无敌好用!
  20. 论文笔记: iDice: Problem Identification for Emerging Issues

热门文章

  1. HTTP缓存字段总结
  2. Java基础学习总结(21)——数组
  3. mycheckpoint
  4. [bug]不包含“AsNoTracking”的定义
  5. 接班 RT 系统?Windows 10 云服务版首次亮相
  6. Caffe将自己的文件生成lmdb
  7. javascript之变量,作用域和内存问题
  8. java基础--集合Connection/Map
  9. [转载] 七龙珠第一部——第032话 飞天要塞
  10. MS UC 2013-0-虚拟机-标准化-部署-3-虚拟机-生产