springboot集成dubbo
## 1.创建公共工程 dubbo-common-api
定义接口
```java
package com.anyec.demo.service;
import java.util.List;
import com.anyec.demo.model.User;
public interface UserService {
User getUserById(String id);
List<User> listUser(User u);
}
```
定义数据对象
```package com.anyec.demo.model;
import java.io.Serializable;
import java.util.Date;
import com.alibaba.fastjson.JSON;
public class User implements Serializable {
private String id;
private String name;
private Date createDate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
```
```JAVA
```
## 2 创建 provider工程
2.1工程依赖公共工程对应的接口和数据对象
2.2使用spring initlazer创建功能加入pom依赖
```
<?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.anyec</groupId>
<artifactId>dobbo-demo-provider</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>dobbo-demo-provider</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
```
2.3设置配置文件
```java
spring.application.name=demo-dubbo-provider#工程名称
spring.dubbo.server=true#开启dubbo服务
spring.dubbo.registry=zookeeper://localhost:2181 #配置注册方式和地址
```
2.4启动类加上注解
```java
package com.anyec.demo.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@SpringBootApplication
@EnableDubboConfiguration
public class DobboDemoProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DobboDemoProviderApplication.class, args);
}
}
```
2.5实现创建服务实例实现服务接口
```
package com.anyec.demo.provider.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.anyec.demo.model.User;
@Service //使用的是dubbo的service
@Component //使用的是spring注解,避免service重复
public class UserServiceImpl implements com.anyec.demo.service.UserService{
@Override
public User getUserById(String id) {
User u=new User();
u.setId(id);
u.setName("test"+id);
u.setCreateDate(new Date());
return u;
}
@Override
public List<User> listUser(User u2) {
List<User> list=new ArrayList<User>();
for(int i=0;i<10;i++){
User u=new User();
u.setId(UUID.randomUUID().toString());
u.setName("test"+i);
u.setCreateDate(new Date());
list.add(u);
}
return list;
}
}
```
## 3 消费端实现
3.1 创建工程加入pom依赖
```
<?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.anyec</groupId>
<artifactId>dobbo-demo-consumer</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>dobbo-demo-consumer</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</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>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
```
2.2 添加配置项
```
spring.application.name=demo-dubbo-consumer
spring.dubbo.registry=zookeeper://localhost:2181
```
2.3添加消费实现
```java
package com.anyec.demo.consumer;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.fastjson.JSON;
import com.anyec.demo.model.User;
import com.anyec.demo.service.UserService;
@Component
public class UserClientService {
@Reference(interfaceClass = UserService.class)
UserService userService;
public void getUser(){
User u = userService.getUserById("");
System.out.println(u);
}
public void listUser(){
User u = new User();
u.setId("aaa");
u.setName("aasdfdsf");
u.setCreateDate(new Date());
List<User> list = userService.listUser(u);
System.out.println( JSON.toJSONString(list));
}
}
```
2.4添加注解
```
package com.anyec.demo.consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@SpringBootApplication
@EnableDubboConfiguration //添加注解
public class DobboDemoConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DobboDemoConsumerApplication.class, args);
}
}
```
相关推荐
在构建基于Spring Cloud的微服务架构时,版本选型是一个至关重要的步骤,它直接影响到系统的稳定性和可维护性。Spring Cloud作为一个广泛使用的微服务框架,其版本迭代迅速,每个版本都有其特定的功能特性和生命周期...
《Spring Cloud实战》一书深入探讨了Spring Cloud这一强大的微服务框架,它是当前软件开发领域中最受欢迎的构建微服务架构的工具。Spring Cloud基于Spring Boot的便利性,为开发者提供了全面的微服务开发支持,包括...
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...
Spring Cloud中文文档 Spring Cloud 是一个用于快速构建分布式系统的工具集,提供了配置管理、服务发现、断路器、智能路由、微代理、控制总线等多种功能。这些功能可以帮助开发人员快速地支持实现分布式系统中的...
SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点或者说技能点且都有对应的博客介绍,代码开箱即用适合新手学习或老司机复习。 SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点...
根据提供的文件信息,我们可以深入探讨与Spring Cloud相关的知识点。尽管文档标题和描述较为简单,但可以从这些信息中提炼出关于Spring Cloud项目的源码下载、Spring Cloud的基本概念、用途及其核心组件等方面的内容...
基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的...
在"springCloud-master_单点登录_springCloud单点登录_SpringCloud系统_springcloud eureka单点登录"这个项目中,我们将重点探讨如何在SpringCloud环境中实现单点登录(Single Sign-On,简称SSO)。 单点登录是一种...
springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud Config使用Oracle数据库作为后端配置存储 Spring Cloud Config + Spring Cloud...
基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的...
Spring Cloud 是一个强大的框架,专为开发人员设计,旨在简化构建分布式系统中的各种常见模式。分布式系统的复杂性催生了一系列模板模式,Spring Cloud 提供了一站式的解决方案,使得开发者能够快速支持并实现这些...
基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于...
《SpringCloud视频学习》 SpringCloud作为微服务架构的重要实现框架,深受广大开发者的喜爱。本资源包含了两部关于SpringCloud的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...
Spring Cloud Alibaba 操作手册 Spring Cloud Alibaba 是一种基于 Spring Cloud 的微服务架构解决方案,旨在帮助开发者快速构建分布式系统。该手册旨在指导开发者如何使用 Spring Cloud Alibaba 实现微服务架构的...
一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具包,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...
【尚硅谷周阳老师SpringCloud笔记】是一份深入学习SpringCloud技术体系的教程资源,由知名教育机构尚硅谷的周阳老师编撰。SpringCloud作为微服务架构的重要框架,广泛应用于现代企业的分布式系统开发中。这份笔记...
SpringCloud是中国Java开发者广泛使用的微服务框架,它包含了一系列组件,用于构建分布式系统。这个压缩包文件"SpringCloud 15个完整例子"提供了一系列从基础到进阶的示例项目,帮助用户深入理解并实践SpringCloud的...
在微服务架构中,Spring Cloud Config 是一个强大的分布式配置中心,它允许开发人员将应用程序的配置存储在远程仓库中,并且可以在运行时动态地管理和更新这些配置,无需重启应用。这个特性对于大型分布式系统来说...
Spring cloud 实战电商网站项目( 模块) 目的: 综合应用 spring cloud进行微服务架构开发。 开发环境 操作系统 : windows Java环境 : JDK1.8(不能使用高版本) 开发工具 : Idea 2020 数据库: mysql 5.5以上 ...