服务器之家

服务器之家 > 正文

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

时间:2021-03-06 13:30     来源/作者:Magogo

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

1. boot-dubbo-api相关

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

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

创建文件和包结构

user.java

?
1
2
3
4
5
6
7
8
9
10
11
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

?
1
2
3
4
5
6
package com.boot.service;
import com.boot.domain.user;
public interface testservice {
 string sayhello(string str);
 user finduser();
}

2. boot-dubbo-provider相关

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

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

boot-dubbo-provider项目结构图

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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配置文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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的配置文件。

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

3. boot-dubbo-consumer相关

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

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

boot-dubbo-consumer项目结构图

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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配置文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
<?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文件。

?
1
2
3
4
5
6
7
8
9
10
11
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的配置文件。

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

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

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

下载地址 zookeeper下载地址

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

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

zookeeper的下载

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

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

拷贝生成zoo.cfg文件

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

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

运行zkserver.cmd

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

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

运行成功

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

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

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

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

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

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

原文链接:https://www.jianshu.com/p/0837b48d1691

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部