springboot整合dubbo案例(代码片段)

author author     2022-12-18     574

关键词:

使用框架:

  1. jdk 1.8

  2. springboot-2.1.3

  3. dubbo-2.6

  4. 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-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>

添加spring-data-jpa 依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2、创建model

package com.example.demo.model;

@Entity
public class User implements Serializable
    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue
    private long id;
    private String userName;
    private String password;
    private int age;
    public long getId() 
        return id;
    
//省略set get 方法

3、创建接口:

package com.example.demo.service;

import com.example.demo.model.User;

public interface UserService 

    public void save(User user);

    public String sayHello(String word);

4、使用命令 clean install 打包安装到maven仓库。

阿里巴巴提供的dubbo集成springboot开源项目;

参考文档:

https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md

本工程采用该项目的jar包进行继承:

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

二、开发dubbo服务提供者:

1、创建一个Springboot项目spring-boot-demo-dubbo-provider并配置好相关的依赖;

pom.xml

<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>

        <!-- 加入springboot与dubbo集成的起步依赖 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

        <!-- 由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包: -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

        <!-- spring-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- 添加接口服务 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>spring-boot-demo-dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

2、在Springboot的核心配置文件application.properties中配置dubbo的信息:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

# 访问端口
server.port=8080
# dubbo配置
dubbo.application.name=springboot-dubbo-provider
dubbo.registry.address=zookeeper://192.168.146.128:2181

3、开发编写Dubbo的接口实现类:

package com.example.demo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;

@Component //注册为spring bean
@Service // 这注解是dubbo提供的 
public class UserServiceImpl implements UserService 

    @Autowired
    private UserRepository userRepository;

    @Override
    public void save(User user) 
        userRepository.save(user);
    

    @Override
    public String sayHello(String word) 
        return word;
    

4、入口main程序启动Dubbo服务提供者:添加注解 @EnableDubbo

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboProviderApplication 

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

启动main ,服务发布到zookeeper 注册中心。

三、开发dubbo服务消费者:

1、创建一个Springboot项目spring-boot-demo-dubbo-consumer并配置好相关的依赖;

2、加入springboot与dubbo集成的起步依赖:(pom.xml 配置同上)

注意: 服务提供者 和 消费者都要配置 服务接口依赖

3、在Springboot的核心配置文件application.properties中配置dubbo的信息:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

# WEB\u670D\u52A1\u7AEF\u53E3
server.port=8081
# dubbo\u914D\u7F6E
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://192.168.146.128:2181 

4、编写一个Controller类,调用远程的Dubbo服务:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.demo.model.User;
import com.example.demo.service.UserService;

@RestController
public class UserController 

    @Reference //该注解是dubbo提供的
    private UserService userService;

    @RequestMapping("/say")
    public String sayHello(String name) 
        return userService.sayHello(name);
    

    @RequestMapping("/save")
    public void save() 
        User u = new User();
        u.setAge(20);
        u.setPassword("123");
        u.setUserName("zheng");
        userService.save(u);
    

5、启动类添加 开启dubbo 注解 @EnableDubbo

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboConsumerApplication 
    public static void main(String[] args) 
        SpringApplication.run(SpringBootDemoDubboConsumerApplication.class, args);
    

6、启动main方法。

7、调用远程接口:

http://localhost:8081/say?name=hello

一个SpringBoot基于Dubbo的服务接口开发完成。

dubbo学习——springboot整合dubbo(代码片段)

...中获取到所有的提供者/消费者进行配置管理。Dubboadminisaspringbootapplicat 查看详情

dubbo学习——springboot整合dubbo(代码片段)

...中获取到所有的提供者/消费者进行配置管理。Dubboadminisaspringbootapplicat 查看详情

springboot与dubbo整合入门(三种方式)(代码片段)

Springboot与Dubbo整合三种方式详解整合环境:jdk:8.0dubbo:2.6.2springboot:2.1.5项目结构:1、搭建项目环境:  (1)创建父项目与三个子项目,创建项目时,都使用springinitializr,创建时,父项目中注意的一点:    (2)创建三个子... 查看详情

springboot开发案例之整合dubbo分布式服务

前言在SpringBoot很火热的时候,阿里巴巴的分布式框架Dubbo不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本Dubbox,整合方式也是使用的xml配置方式。改造前之前在SpringBoot中使用D... 查看详情

springboot开发案例之整合dubbo分布式服务

前言在SpringBoot很火热的时候,阿里巴巴的分布式框架Dubbo不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本Dubbox,整合方式也是使用的xml配置方式。改造前之前在SpringBoot中使用D... 查看详情

springboot开发案例之整合dubbo分布式服务

前言在SpringBoot很火热的时候,阿里巴巴的分布式框架Dubbo不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本Dubbox,整合方式也是使用的xml配置方式。改造前之前在SpringBoot中使用D... 查看详情

dubbo远程调用(rpc)-->快速入门+管理控制台+整合springboot开发(代码片段)

...制台1.jar包部署管理平台2.war包部署管理平台四、Dubbo开发SpringBoot1.Dubbo文档查询2.架构模型3.代码实现五、Du 查看详情

springboot整合dubbo的第三种方式——xml配置+@importresource(代码片段)

...官方文档2.三个工程2.1公共接口工程参考这篇文章:SpringBoot整合Dubbo的第一种方式2.2服务提供者首先我们注释掉配置文件中的相关内容,只留下应用名(不留也可以)。spring.application.name=boot-user-service-provider#dubb... 查看详情

springboot+dubbo+zookeeper快速入门案例(代码片段)

项目目录结构:第一步:创建一个SpringBoot项目,这里选择Maven项目或者SpringInitializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下:<?xmlversion="1.0"enco 查看详情

springboot+dubbo+zookeeper快速入门案例(代码片段)

项目目录结构:第一步:创建一个SpringBoot项目,这里选择Maven项目或者SpringInitializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下:<?xmlversion="1.0"enco 查看详情

springboot+dubbo+zookeeper快速入门案例(代码片段)

项目目录结构:第一步:创建一个SpringBoot项目,这里选择Maven项目或者SpringInitializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下:<?xmlversion="1.0"enco 查看详情

duboo3.0+springboot+zookeeper整合例子(附源码)(代码片段)

dubbo整合SpringBoot例子dubbo新版本(3.0以上)在相对于dubbo旧版本(2.5、2.6、2.7),有很多的不相同的地方。官方文档也说了新版本的特性:https://dubbo.apache.org/zh/docs/v3.0/new-in-dubbo3本文就来使用dubbo新版本搭建... 查看详情

基于springboot的完成ssm整合项目开发案例(代码片段)

SpringBoot🍌掌握基于SpringBoot框架的程序开发步骤🍌使用SpringBoot配置信息修改服务器配置🍌SpringBoot完成SSM整合之SpringBoot整合junit🍌基于SpringBoot的完成mybatis整合今日目标:基于SpringBoot的完成SSM整合项目开发案... 查看详情

springboot整合dubbo的第二种方式——api(自定义configuration配置类)(代码片段)

...官方文档2.三个工程2.1公共接口工程参考这篇文章:SpringBoot整合Dubbo的第一种方式2.2服务提供者首先我们注释掉配置文件中的相关内容,只留下应用名(不留也可以)。spring.application.name=boot-user-service-provider#dubb... 查看详情

dubbo2.7整合spring(xml形式)(代码片段)

...整合Spring(xml形式)Dubbo在springxml形式的配置要比SpringBoot注解形式的配置可读性要更友好。springboot项目也推荐使用xml形式配置dubbo因为Dubbo是可以具体到方法级别的,使用xml配置起来更直观。(官方也推荐)本... 查看详情

springboot整合hystrix服务降级案例(代码片段)

一、修改案例一基于SpringBoot整合Hystrix服务降级案例(一)继续完善服务降级二、给FeignClient设置统一的服务降级新增类型PaymentHystrixFeignFallback实现PaymentHystrxFeign的所有自定义Fallback方法@ComponentpublicclassPaymentHystrixFeignFallbackimplement... 查看详情

springboot整合redis,推荐整合和使用案例(2021版)(代码片段)

背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗。由于springboot最大化地简化了整合redis需... 查看详情

springboot整合dubbo的第一种方式——application.properties+@dubboservice+@dubboreference(代码片段)

1.文档参照dubbo配置官方文档2.三个工程2.1公共接口工程这个工程中存放的是一些公共的JavaBean、相关接口信息。其中UserService接口是针对服务提供者的,OrderService接口是针对服务消费者的。<dependency><groupId>org.projectlomb... 查看详情