本文使用的是alibaba的Dubbo。

Dubbo整合Springboot可以分为四步:

第一步:首先需要了解Dubbo官方给的建议,至少有三个工程:

接口工程:主要存实体bean和业务接口

服务提供者:业务接口的实现类和调用数据持久层,并将服务注册到注册中心

服务消费者:处理浏览器客户端发送的请求和从注册中心调用服务提供者提供的服务

上面的听起来很拗口,我们来实现一个工程试试。

首先,创建上述的三个工程:

这里要注意:interface创建Maven项目就好了。其他两个是springboot项目。

第二步:添加POM依赖

<!--alibaba的Dubbo集成springboot依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency> <dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
    
<dependency>
<groupId>com.kunkun.springboot</groupId>
<artifactId>05-springboot-dubbo-interface</artifactId>
<version>1.0.0</version>
</dependency>

这边主要有三个依赖:alibaba的dubbo集成springboot依赖和zookeeper依赖,以及我们的接口工程的依赖。

这里的依赖在服务提供者和消费者的pom文件中都需要添加。

第三步:添加配置

服务提供者的application.properties:

#springboot的应用名称(不能少,可以变)
spring.application.name=05-springboot-dubbo-provider
#是否是dubbo服务端(服务提供者)
spring.dubbo.server = true
#dubbo的注册中心,如果位N/A表示不使用注册中心
#我们使用zookeeper
spring.dubbo.registry = zookeeper://127.0.0.1:2181

服务消费者的配置:

#springboot的应用名称(不能少,可以变)
spring.application.name=05-springboot-dubbo-consumer #dubbo的注册中心,如果位N/A表示不使用注册中心
#我们使用zookeeper
spring.dubbo.registry = zookeeper://127.0.0.1:2181

第四步:写代码

首先,是接口项目的代码:

@Data
public class Student implements Serializable { private static final long serialVersionUID = -302975163235439602L; private Integer id;
private String name;
private Integer age; public Student(Integer id,String name,Integer age){
this.age = age;
this.id = id;
this.name = name;
}
}
import com.kunkun.springboot.model.Student;

public interface StudentService {
public Student getStudentById(); }

然后是服务提供者的代码:

//dubbo的service
@Component //表示我这个类是spring的一个bean
@Service(timeout = 100,retries = 1)//相当于原来用xml中<dubbo:service interface="xxx" , ref = "xxx">
public class StudentServiceImpl implements StudentService { @Override
public Student getStudentById() {
return new Student(1,"zhangsan",10);
} }

这边需要注意的就是注解@Service需要使用的是dubbo的service,不可以使用spring的@Service。

最后是服务消费者的代码:就是完成请求过来的处理

@RestController
public class StudentController {
@Reference
private StudentService studentService; @RequestMapping("/")
public Object student(){
return studentService.getStudentById();
}
}

这边需要注意的就是@AutoWired要换成@Reference

最后,需要在Application上面加上@EnableDubboConfiguration

@SpringBootApplication
@EnableDubboConfiguration
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }

Dubbo整合Springboot框架的更多相关文章

  1. dubbo入门学习(三)-----dubbo整合springboot

    springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇 ...

  2. dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示

    dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示   By:客 授客 QQ:1033553122  欢迎加入全国软件测试交流 QQ  群:7156436 ...

  3. Dubbo整合SpringBoot

    目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现.借此了解一下基于springboot容器启动的dubbo的配置及使用. 1. 准备工作 创 ...

  4. dubbo整合springboot最详细入门教程

    说明 目前互联网公司,大部分项目都是基于分布式,一个项目被拆分成几个小项目,这些小项目会分别部署在不同的计算机上面,这个叫做微服务.当一台计算机的程序需要调用另一台计算机代码的时候,就涉及远程调用.此 ...

  5. SpringBoot与Dubbo整合的三种方式

    1. 使用默认application.properties和注解的方式 导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用 ...

  6. 手把手教你Dubbo与SpringBoot常用两种方式整合

    一.Dubbo整合SpringBoot的方式(1) 1)直奔主题,方式一: pom.xml中引入dubbo-starter依赖,在application.properties配置属性,使用@Servi ...

  7. 整合springboot(app后台框架搭建四)

    springboot可以说是为了适用SOA服务出现,一方面,极大的简便了配置,加速了开发速度:第二方面,也是一个嵌入式的web服务,通过jar包运行就是一个web服务: 还有提供了很多metric,i ...

  8. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  9. 搭建SpringBoot+dubbo+zookeeper+maven框架(二)

    上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...

随机推荐

  1. Spring升级案例之IOC介绍和依赖注入

    Spring升级案例之IOC介绍和依赖注入 一.IOC的概念和作用 1.什么是IOC 控制反转(Inversion of Control, IoC)是一种设计思想,在Java中就是将设计好的对象交给容 ...

  2. [Qt2D绘图]-04绘制文字&&绘制路径

    注:学习自<Qt Creator 快速入门>第三版.   文档中的示例参考 Qt Example推荐:Painter Paths Example和Vector Deformation   ...

  3. js JQ动态添加div标签

    function renderList(data){ var str = ''; for(var i = 0; i < data.length; i++){ // 动态添加li str += ' ...

  4. DataTable 转 JSON,XML转JSON

    今天总结一下关于DataTable,XML转JSON的方法: 首先需要引入命名空间: using Newtonsoft.Json 1 public string DataTableToJsonWith ...

  5. 利用updatexml()报错注入mysql

    基本介绍一下updatexml() updatexml(XML_document, XPath_string, new_value) XML_document是文档对象的名称 XPath_string ...

  6. vue-resource(搬运)

    一.vue-resource特点vue-resource插件具有以下特点: 1. 体积小vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比 ...

  7. Python 写入excel时的字体格式设置

    转自:https://blog.csdn.net/kuangzhi9124/article/details/81940919 下面代码设置了单元格的字体.位置居中.框线,可以将格式调成自己需要的 im ...

  8. centos7 离线安装paramiko

    离线安装paramiko   1. 利用yum下载paramiko依赖的rpm软件包 安装yum-utils yum -y install yum-utils yumdownloader python ...

  9. pandas之DataFrame合并merge

    一.merge merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询.merge的使用方法及参数解释如下: pd.merge(left, right, on=None, ...

  10. PHPSTORM常用插件

    Translation 最好用的翻译插件 .env files support 可以在env函数使用是提示.env文件中所有的key值的自动完成功能 PHP composer.json support ...