详解Springboot整合Dubbo之代码集成和发布

 更新时间:2017年12月16日 15:45:55   作者:Magogo  
本篇文章主要介绍了Springboot整合Dubbo之代码集成和发布,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

本文介绍了Springboot整合Dubbo之代码集成和发布,分享给大家,具体如下:

1. boot-dubbo-api相关

打开boot-dubbo-api项目,正在src/main/java下创建一个包,并创建你需要dubbo暴露的接口TestService.java,并创建一个实体类用于测试User.java。如下图所示:

创建文件和包结构

User.java

package com.boot.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
 private Integer id;
 private String username;
 private String password;
 private Integer age;
 private Integer gender;
}

TestService.java

package com.boot.service;
import com.boot.domain.User;
public interface TestService {
 String sayHello(String str);
 User findUser();
}

2. boot-dubbo-provider相关

首先我们先看看总共需要编写的内容,文件的层次结构图

boot-dubbo-provider项目结构图

第一步:我们首先实现我们在boot-dubbo-api上定义的接口,创建一个TestServiceImpl类并实现TestService

package com.boot.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.boot.domain.User;
import com.boot.service.TestService;
import java.text.SimpleDateFormat;
import java.util.Date;
@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {

 @Override
 public String sayHello(String str) {
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  return dateFormat.format(new Date()) + ": " + str;
 }

 @Override
 public User findUser() {
  User user = new User();
  user.setId(1001);
  user.setUsername("scott");
  user.setPassword("tiger");
  user.setAge(20);
  user.setGender(0);
  return user;
 }
}

注意:代码里的@Service注解是com.alibaba.dubbo.config.annotation.Service的。

第二步:在resources下创建一个config文件夹,在config下创建spring-dubbo.xml配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://code.alibabatech.com/schema/dubbo
  http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

 <dubbo:application name="provider"/>
 <!-- 注册中心的ip地址 -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
 <dubbo:annotation package="com.boot.service.impl"/>
</beans>

第三步:在com.boot包下新建Springboot的入口类,创建一个ProviderApplication.java文件。

package com.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
import java.io.IOException;
@SpringBootApplication
@ImportResource({"classpath:config/spring-dubbo.xml"})
public class ProviderApplication {
 public static void main(String[] args) {
  SpringApplication.run(ProviderApplication.class, args);
  try {
   System.in.read();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

第四步:最后在resources文件夹下面创建application.yml,Springboot的配置文件。

# 在这里编写springboot的配置信息

3. boot-dubbo-consumer相关

首先我们先看看总共需要编写的内容,文件的层次结构图

boot-dubbo-consumer项目结构图

第一步:编写我们的Controller控制类,在com.boot.controller包下新建一个TestController类,编写访问地址。

package com.boot.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.boot.domain.User;
import com.boot.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class TestController {
 @Reference(version = "1.0.0")
 private TestService testService;

 @GetMapping("hello")
 public String hello() {
  return testService.sayHello("Hello springboot and dubbo!");
 }

 @GetMapping("user")
 public User user() {
  return testService.findUser();
 }
}

第二步:在resources下创建一个config文件夹,在config下创建spring-dubbo.xml配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://code.alibabatech.com/schema/dubbo
  http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 <dubbo:application name="consumer"/>
 <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 <dubbo:annotation package="com.boot.controller"/>
</beans>

第三步:在com.boot包下新建Springboot的入口类,创建一个ConsumerApplication.java文件。

package com.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ImportResource({"classpath:config/spring-dubbo.xml"})
public class ConsumerApplication {
 public static void main(String[] args) {
  SpringApplication.run(ConsumerApplication.class, args);
 }
}

第四步:最后在resources文件夹下面创建application.yml,Springboot的配置文件。

# 在这里编写springboot的配置信息
server:
 port: 8080
 context-path: /

至此,代码部分已经编写完毕!!!

4. 安装zookeeper注册中心到电脑中

下载地址:zookeeper下载地址

点击后下载适合自己的版本,如图所示

zookeeper的下载

下载完毕后,解压缩该文件,进入conf文件夹,拷贝一份zoo_sample.cfg,在该目录生成zoo.cfg文件。

拷贝生成zoo.cfg文件

进入bin目录,运行zkServer.cmd文件。

运行zkServer.cmd

点击运行后出现如下图所示

运行成功

5. 现在终于可以运行我们的项目了

先运行我们的ProviderApplication.java文件的main函数,再运行ConsumerApplication.java文件的main函数。

打开浏览器访问
http://localhost:8080/hello
http://localhost:8080/user

好了,激动人心的时刻到了,我们终于完成了Springboot和Dubbo的集成了。

项目地址:springboot-dubbo项目GitHub地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java并发编程中的synchronized关键字详细解读

    Java并发编程中的synchronized关键字详细解读

    这篇文章主要介绍了Java并发编程中的synchronized关键字详细解读,在Java早期版本中,synchronized 属于 重量级锁,效率低下,这是因为监视器锁(monitor)是依赖于底层的操作系统的Mutex Lock来实现的,Java 的线程是映射到操作系统的原生线程之上的,需要的朋友可以参考下
    2023-12-12
  • MyBatis-plus的五种批量插入方式对比分析

    MyBatis-plus的五种批量插入方式对比分析

    本文主要介绍了MyBatis-plus的五种批量插入方式对比分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java欧拉函数的计算代码详解

    Java欧拉函数的计算代码详解

    这篇文章主要介绍了Java实现欧拉函数的计算,从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明,本文通过实例代码给大家介绍的很详细,需要的朋友可以参考下
    2021-05-05
  • Java设计图形与多媒体处理

    Java设计图形与多媒体处理

    本文主要介绍了Java的图形设计以及多媒体处理,源码也做了详细的注释,对于初学者应该不难。详细请看下文
    2015-09-09
  • Java.lang.NullPointerException的错误解决

    Java.lang.NullPointerException的错误解决

    Java中NullPointerException是一种常见的运行时异常,通常发生在尝试调用null对象的方法或访问其属性时,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • Java多线程的同步优化的6种方案

    Java多线程的同步优化的6种方案

    大家使用多线程无非是为了提高性能,在Java中,有多线程并发时,我们可以使用多线程同步的方式来解决内存一致性的问题。本文就详细的介绍了Java多线程同步优化,感兴趣的可以了解一下
    2021-05-05
  • Java Map的compute方法举例详解

    Java Map的compute方法举例详解

    Java中的Map是一种用于存储键值对的数据结构,它提供了一系列的方法来操作和访问其中的元素,下面这篇文章主要给大家介绍了关于Java Map的compute方法举例详解的相关资料,需要的朋友可以参考下
    2024-06-06
  • 详解Spring连接数据库的几种常用的方式

    详解Spring连接数据库的几种常用的方式

    本篇文章主要介绍了Spring连接数据库的几种常用的方式,具有一定的参考价值,有需要的可以了解一下。
    2016-12-12
  • Java基数排序radix sort原理及用法解析

    Java基数排序radix sort原理及用法解析

    这篇文章主要介绍了Java基数排序radix sort原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java数据结构BFS广搜法解决迷宫问题

    Java数据结构BFS广搜法解决迷宫问题

    广搜BFS的基本思想是: 首先访问初始点v并将其标志为已经访问。接着通过邻接关系将邻接点入队。然后每访问过一个顶点则出队。按照顺序,访问每一个顶点的所有未被访问过的顶点直到所有的顶点均被访问过。广度优先遍历类似与层次遍历
    2022-04-04

最新评论