SpringBoot集成Dubbo

(1)、新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等。

项目:

公共Bean:

 1 package cn.coreqi.entities;
 2
 3 import java.io.Serializable;
 4
 5 public class User implements Serializable {
 6     private Integer id;
 7     private String userName;
 8     private String passWord;
 9     private Integer enabled;
10
11     public User() {
12     }
13
14     public User(Integer id, String userName, String passWord, Integer enabled) {
15         this.id = id;
16         this.userName = userName;
17         this.passWord = passWord;
18         this.enabled = enabled;
19     }
20
21     public Integer getId() {
22         return id;
23     }
24
25     public void setId(Integer id) {
26         this.id = id;
27     }
28
29     public String getUserName() {
30         return userName;
31     }
32
33     public void setUserName(String userName) {
34         this.userName = userName;
35     }
36
37     public String getPassWord() {
38         return passWord;
39     }
40
41     public void setPassWord(String passWord) {
42         this.passWord = passWord;
43     }
44
45     public Integer getEnabled() {
46         return enabled;
47     }
48
49     public void setEnabled(Integer enabled) {
50         this.enabled = enabled;
51     }
52
53     @Override
54     public String toString() {
55         return "User{" +
56                 "id=" + id +
57                 ", userName=‘" + userName + ‘\‘‘ +
58                 ", passWord=‘" + passWord + ‘\‘‘ +
59                 ", enabled=" + enabled +
60                 ‘}‘;
61     }
62 }

公共服务接口:

 1 package cn.coreqi.service;
 2
 3 import cn.coreqi.entities.User;
 4
 5 import java.util.List;
 6
 7 public interface UserService {
 8     public void addUser(User user);
 9     public void delById(Integer id);
10     public void modifyUser(User user);
11     public User getById(Integer id);
12     public List<User> getList();
13 }

(2)、新建SpringBoot项目用作与服务提供者

  1)、添加依赖

    

 1         <dependency>
 2             <groupId>com.alibaba.boot</groupId>
 3             <artifactId>dubbo-spring-boot-starter</artifactId>
 4             <version>0.2.0</version>
 5         </dependency>
 6
 7         <!--引入公共的Maven项目-->
 8         <dependency>
 9             <groupId>cn.coreqi</groupId>
10             <artifactId>springbootdubboapi</artifactId>
11             <version>1.0-SNAPSHOT</version>
12         </dependency>

*  dubbo-spring-boot-starter的版本与SpringBoot的版本之间有相应的对照关系

*  0.2.x的默认使用curator作为操作zookeeper的客户端。0.1.x需要自行导入zookeeper的客户端

1 <dependency>
2     <groupId>com.github.sgroschupf</groupId>
3     <artifactId>zkclient</artifactId>
4     <version>0.1</version>
5 </dependency>

  2)、配置相关属性

1 dubbo.application.name=boot-service-provider
2 dubbo.registry.address=192.168.205.128:2181
3 dubbo.registry.protocol=zookeeper
4 dubbo.protocol.name=dubbo
5 dubbo.protocol.port=20880
6 dubbo.monitor.protocol=registry
7
8 server.port=8080

  3)、在要暴露服务的服务实现类上添加Dubbo的@Service注解,并将Spring的@Service注解替换为@Component注解

 1 package cn.coreqi.service.impl;
 2
 3 import cn.coreqi.entities.User;
 4 import cn.coreqi.service.UserService;
 5 import com.alibaba.dubbo.config.annotation.Service;
 6 import org.springframework.stereotype.Component;
 7
 8 import java.util.ArrayList;
 9 import java.util.List;
10
11 @Component  //org.springframework.stereotype.Component
12 @Service    //com.alibaba.dubbo.config.annotation.Service
13 public class UserServiceImpl implements UserService {
14     private static List<User> users = new ArrayList<>();
15     static {
16         users.add(new User(1,"fanqi","123456",1));
17         users.add(new User(2,"zhangsan","123456",1));
18         users.add(new User(3,"lisi","123456",1));
19         users.add(new User(4,"wangwu","123456",1));
20     }
21     @Override
22     public void addUser(User user) {
23         users.add(user);
24     }
25
26     @Override
27     public void delById(Integer id) {
28         for (User s:users){
29             if(s.getId() == id){
30                 users.remove(s);
31                 break;
32             }
33         }
34     }
35
36     @Override
37     public void modifyUser(User user) {
38         delById(user.getId());
39         addUser(user);
40     }
41
42     @Override
43     public User getById(Integer id) {
44         for (User s:users){
45             if(s.getId() == id){
46                 return s;
47             }
48         }
49         return null;
50     }
51
52     @Override
53     public List<User> getList() {
54         return users;
55     }
56 }

  4)、在主程序启动类上添加@EnableDubbo注解开启基于注解的Dubbo功能

 1 package cn.coreqi;
 2
 3 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6
 7 @SpringBootApplication
 8 @EnableDubbo
 9 public class SpringbootdubboserviceproviderApplication {
10
11     public static void main(String[] args) {
12         SpringApplication.run(SpringbootdubboserviceproviderApplication.class, args);
13     }
14
15 }

(3)、新建SpringBoot项目用作与服务消费者

  1)、添加依赖(和服务提供者相同。此处略)

  2)、配置相关属性

  

1 dubbo.application.name=boot-service-consumer
2 dubbo.registry.address=zookeeper://192.168.205.128:2181
3 dubbo.monitor.protocol=registry
4
5 server.port=9090

  3)、在远程引用服务的属性上添加@Reference注解

 1 package cn.coreqi.controller;
 2
 3 import cn.coreqi.entities.User;
 4 import cn.coreqi.service.UserService;
 5 import com.alibaba.dubbo.config.annotation.Reference;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.ResponseBody;
 9
10 import java.util.List;
11
12 @Controller
13 public class UserController {
14     @Reference
15     public UserService userService;
16
17     @ResponseBody
18     @RequestMapping("/users")
19     public List<User> getUsers(){
20         return userService.getList();
21     }
22 }

  4)、在主程序启动类上添加@EnableDubbo注解开启基于注解的Dubbo功能(和服务提供者相同。此处略)

原文地址:https://www.cnblogs.com/fanqisoft/p/10357316.html

时间: 2024-11-02 11:59:13

SpringBoot集成Dubbo的相关文章

eclipse创建Maven Project(springboot集成dubbo第一步)

!!!每一种方式都是自己的工具,熟悉就好,献给最初的我与你 创建maven项目 注意此处:我勾选了第一个按钮 1:file->New Maven Project->next     2:输入内容->完成 Group Id :组名 常指公司名(任意) ArtiFact Id :项目名(任意),其它默认   3:项目初步总览(此时项目有感叹号)     3:修改java版本:项目名 右键->properties ->选中 java Build Path ->JRE Syst

dubbo入门和springboot集成dubbo小例子

从零开始搭建springboot-dubbo的例子 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案 一. Dubbo的简单介绍 1. 网站架构的发展历程 网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多....... 单一应用架构(OORM) 当网站流量很小时,将所有的功能部署到一起,以减少部署节点和成本.此时,只需要使用简化增删改查的工作量,采用数据访问框架(ORM). 垂直应用架构 (MVC) 当访问量逐

springboot 集成dubbo

原文地址:https://www.cnblogs.com/hwgok/p/9527008.html

SpringBoot系列之集成Dubbo的方式

本博客介绍Springboot框架集成Dubbo实现微服务的3种常用方式,对于Dubbo知识不是很熟悉的,请先学习我上一篇博客:SpringBoot系列之集成Dubbo实现微服务教程,本博客只是对上篇博客的补充,上篇博客已经介绍过的就不重复介绍 还是使用上篇博客的例子,业务场景: 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在 需要创建两个服务模块进行测试 模块 功能 订单服务模块 创建订单等 用户服务模块 查询用户地址等 测试预期结果: 订单服务web模块在A服务器,

Springboot 整合 Dubbo/ZooKeeper

本文提纲 一.为啥整合 Dubbo 实现 SOA 二.运行 springboot-dubbo-server 和 springboot-dubbo-client 工程 三.springboot-dubbo-server 和 springboot-dubbo-client 工程配置详解 一.为啥整合 Dubbo 实现 SOA Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案. 核心: 1. 远程通信,向本地调用一样调用远程方法. 2. 集群容错 3. 服务自动发现和

SpringBoot集成redisson(单机,集群,哨兵)

1.springBoot集成redisson(单机,集群,哨兵) redisson版本使用3.8.2 <dependency>??????<groupId>org.redisson</groupId>??????<artifactId>redisson</artifactId>??????<version>3.8.2</version></dependency> 2.配置文件 application.prope

SpringBoot整合Dubbo案例

使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类: 1.创建springboot工程 spring-boot-demo-dubbo-interface 坐标: <groupId>com.example</groupId> <artifactId>spring-boot-demo-dubbo

spring boot 集成 dubbo 企业完整版

一.什么是Spring Boot ? 现阶段的 Spring Boot 可谓是太火了,为什么呢?因为使用方便.配置简洁.上手快速,那么它是什么?从官网上我们可以看到,它是 Spring 开源组织下的一个子项目,主要简化了 Spring 繁重的配置,而且 Spring Boot 内嵌了各种 Servlet 容器,如:Tomcat.Jetty 等 官方网站:http://projects.spring.io/spring-boot/ GitHub源码:https://github.com/sprin

集成Dubbo服务(Spring)

Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以