您的位置:首页 > 编程语言 > Java开发

springboot简单整合dubbo的小demo(基于yml配置)

2019-02-11 21:58 639 查看
## pringboot简单整合dubbo的小demo(基于yml配置)
## 创建分模块springboot
1.先创建一个springboot的空项目然后删除无关文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190211215208368.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIyMTg5NDc5,size_16,color_FFFFFF,t_70)
2.修改pom文件,引入所需依赖(dubbo,zkclient)
<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.xun</groupId>
<artifactId>dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging><!--设置打包方式为pom-->

<name>dubbo</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<!-- 1.模块管理 -->
<modules>
<module>provider</module>
<module>consumer</module>
</modules>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- 2.引入dubbo和zookeeper依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
```
3.然后创建模块
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190211215112677.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIyMTg5NDc5,size_16,color_FFFFFF,t_70)
4.至此,我们的分模块项目已经基本创建完成
各个模块之间的依赖关系
1.接下来说下各个模块之间的依赖关系
consumer --> provider
consumer 和 provier 又同时依赖于父pom【dubbo】
2.ok理清依赖关系开始配置我们的各个模块
5.依赖配置
1.最外层pom.xml作为我们所有模块的父pom打包方式要是pom类型,上边配置中已经说明
2.配置provider模块,需要继承父pom
<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.xun</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>provider</name>
<description>Demo project for Spring Boot</description>

<!-- 1.继承父类pom -->
<parent>
<groupId>com.xun</groupId>
<artifactId>dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
3.配置consumer模块,需要继承父pom并且要引入provider依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.xun</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>consumer</name>
<description>Demo project for Spring Boot</description>

<!-- 1.继承父pom -->
<parent>
<groupId>com.xun</groupId>
<artifactId>dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<dependencies>
<!-- 2.引入服务接口依赖 -->
<dependency>
<groupId>com.xun</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

</project>

## 4.ok依赖配置完成,接下来就开始撸代码了
配置dubbo配置
1.provider模块dubbo配置

server:
port: 8081

dubbo:
#应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者
application:
name: provider
#注册中心配置,用于配置连接注册中心相关信息
registry:
address: zookeeper://39.106.149.250:2182
#协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
protocol:
name: dubbo
port: 20880
#扫描包
scan:
base-packages: com.xun.provider.service

## 2.consumer模块dubbo配置

server:
port: 8082

dubbo:
application:
name: consumer
registry:
address: zookeeper://39.106.149.250:2182
protocol:
name: dubbo
port: 20880

## 1.业务代码层
需要在程序入口的main方法添加@EnableDubbo注解开启dubbo

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {

public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}

}

2.服务接口编写
在provider模块下创建service包并编写接口代码
这里只提供接口实现类了
注意@Service注解要导入alibaba的包

package com.xun.provider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.xun.provider.service.UserService;

@Service
public class UserServiceImpl implements UserService {
@Override
public String getUser() {
return “你好,DUBBO”;
}
}

3.消费者业务代码编写
在consumer模块下创建controller包并编写接口代码
注意这是使用@Reference注入

package com.xun.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.xun.provider.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

@Reference
private UserService userService;

@GetMapping("/getUser")
public String getUser(){
return userService.getUser();
}

}

## 出于https://www.jianshu.com/p/7fb4cfbcabcc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: