首页 > 其他分享 >SpringBoot整合Alibaba-Dubbo和Apache-Dubbo

SpringBoot整合Alibaba-Dubbo和Apache-Dubbo

时间:2022-11-25 22:00:59浏览次数:40  
标签:Dubbo SpringBoot dubbo spring boot org Apache import public

目录
由于dubbo起初是阿里开发,后来交给了apache维护,所以市场上就有两个版本的dubbo整合

1 Alibaba整合Dubbo

1.1 服务提供者

1.1.1 服务提供者接口

项目结构图
在这里插入图片描述
pom.xm

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

接口类

public interface DemoService {
    public String test (String msg);
}

1.1.2 服务提供者实现类

1.1.2.1 项目结构图

在这里插入图片描述

1.1.2.2 pom.xml

<?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>cn.jzh</groupId>
    <artifactId>dubbo-service-alibaba-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <!-- 接口-->
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--SpringBoot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Dubbo集成SpringBoot框架起步依赖 -->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- 访问zookeeper客户端 jar包 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <!--排除依赖里的日志-->
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

1.1.2.3 服务实现类

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;


@Component
// @Service 这个注解使用的不是spring里面的,而是com.alibaba.dubbo.config.annotation.Service。
// timeout 配置超时时间 , interfaceClass 接口类 ,version 服务版本,如果配置了服务版本在消费端引用也必须一样
@Service(timeout = 1000,interfaceClass = DemoService.class)
public class DemoAlibabaServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo接收信息"+msg;
    }
}

1.1.2.4 配置文件

application.properties

server.port=8081
server.servlet.context-path=/

spring.application.name=spingboot-alibaba-provider

#设置dubbo的配置
dubbo.application.name=springboot-alibaba-provider
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

1.1.2.5 启动类

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

@SpringBootApplication
@EnableDubbo // 启动dubbo功能
@EnableDubboConfiguration // 启动dubbo配置
@DubboComponentScan("cn.jzh.service.impl") // 扫描提供者实现类
public class AppAlibaba {
        public static void main(String[] args) {
            SpringApplication.run(AppAlibaba.class,args);
        }
}

1.2 服务消费者

1.2.1 项目结构图示

在这里插入图片描述

提供者和消费者的pom.xml一样,所以就不在此处写pom.xml

1.2.2 请求入口

import cn.jzh.service.DemoService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {

    // 在这里是使用@Reference去发现服务而不是@Autowired去注入Bean,@Reference里面可以配置version、timeout超时时间
    @Reference
    private DemoService demoService;

    @RequestMapping("/test")
    public String findAllStudent(){
        return demoService.test("测试结果");
    }
}

1.2.3 配置文件

application.properties

server.port=8082
server.servlet.context-path=/

spring.application.name=spingboot-alibaba-consumer

#设置dubbo的配置
dubbo.application.name=springboot-alibaba-consumer
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

1.2.4 启动类

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

@SpringBootApplication
@EnableDubbo
@EnableDubboConfiguration
public class AppAlibabaConsumer {
    public static void main(String[] args) {
        SpringApplication.run(AppAlibabaConsumer.class,args);
    }
}

2 Apache整合Dubbo

2.1 服务提供者

2.1.1 服务提供者接口

项目结构图
在这里插入图片描述
pom.xm

   <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

接口类

public interface DemoService {
    public String test (String msg);
}

2.1.2 服务提供者实现类

2.1.2.1 项目结构图

在这里插入图片描述

2.1.2.2 pom.xml

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
    </parent>

    <groupId>cn.jzh</groupId>
    <artifactId>dubbo-service-apache-impl</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- 接口-->
        <dependency>
            <groupId>cn.jzh</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--SpringBoot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Dubbo集成SpringBoot框架起步依赖 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>
        

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-x-discovery</artifactId>
            <version>4.2.0</version>
        </dependency>
    </dependencies>
</project>

2.1.2.3 服务实现类

在新版apache-dubbodubbo提供者注解@Service提示为过时,推荐使用注解@DubboService

package cn.jzh.service.impl;

import cn.jzh.service.DemoService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

@Component
@DubboService
public class DemoApacheServiceImpl implements DemoService {
    @Override
    public String test(String msg) {
        return "dubbo接收信息"+msg;
    }
}

2.1.2.4 配置文件

application.properties

server.port=8083
server.servlet.context-path=/

spring.application.name=spingboot-apache-provider
#设置dubbo的配置
dubbo.application.name=springboot-apache-provider-dubbo
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

2.1.2.5 启动类

package cn.jzh;

import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableDubbo
@SpringBootApplication
@DubboComponentScan("cn.jzh.service.impl")//用来扫描提供的接口实现位置
public class AppApache {

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

2.2 服务消费者

2.2.1 项目结构图示

在这里插入图片描述

提供者和消费者的pom.xml一样,所以就不在此处写pom.xml

2.2.2 请求入口

在新版apache-dubbodubbo提供者注解@Reference提示为过时,推荐使用注解@DubboReference

package cn.jzh.contoller;

import cn.jzh.service.DemoService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {
  
    @DubboReference
    private DemoService demoService;
    @RequestMapping("/test")
    public String findAllStudent(){
        return demoService.test("测试结果");
    }
}

2.2.3 配置文件

application.properties

server.port=8084
server.servlet.context-path=/

spring.application.name=spingboot-apache-consumer

#设置dubbo的配置
dubbo.application.name=springboot-apache-consumer-dubbo
# 注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

2.2.4 启动类

package cn.jzh;

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

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

标签:Dubbo,SpringBoot,dubbo,spring,boot,org,Apache,import,public
From: https://www.cnblogs.com/jingzh/p/16926509.html

相关文章

  • idea社区版本创建springboot项目的三种方式
    文章目录一、前言一、方式1:spring官方创建springboot项目1、打开在线的springinitializr2、选择项目的语言、版本、依赖等3、解压源码包,并使用IDEA打开4、测试接口二......
  • 基于springboot财务管理系统设计与实现的源码+文档
    摘 要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行......
  • 基于springboot大学生体质测试管理系统设计与实现的源码+文档
    摘要大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息,通过留言区互动更方便。本系统采用了B/S体系的结构,使用了java技术以及MYSQL作为后台数据库进行开发。......
  • 基于springboot电动车智能充电服务平台设计与实现的源码+文档
    摘要在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括电动车智能充电服务平台的网络应用,在外国电动车智能充电服务平台已经是很普遍的方式,不过国......
  • 如何编写一个 SpringBoot 的 Starter
    一、什么是Starter?在开发过程中我们就经常使用到各种starter,比如mybatis-spring-boot-starter,只需要进行简单的配置即可使用,就像一个插件非常方便。这也是SpringBoot......
  • 基于springboot财务管理系统设计与实现的源码+文档
     摘要随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然......
  • dubbo以xml方式操作和新版dubbo-admin安装
    目录1dubboxml配置1.1提供者1.1.1提供者接口1.1.2提供者实现类1.1.2.1项目结构图示1.1.2.2pom.xml1.1.2.3实现类接口1.1.2.4配置文件1.1.2.4.1xml配置1.1.2.4.2......
  • springboot接收前端传参的几种方式
    1、通过HttpServletRequest接收,常用于获取请求头参数以及Cookie,适用于GET和POST请求方式,以下两种方式:@GetMapping("/demo1")publicvoiddemo1(@RequestHeader(name=......
  • Dubbo源码-05-服务导出
    一入口驱动publicstaticvoidmain(String[]args)throwsIOException{//服务提供者暴露服务配置封装了与注册中心的连接ServiceConfig<DemoServ......
  • Dubbo源码-06-ProxyFactory
    作用生产者将要导出的目标对象封装(代理技术或者反射技术)成Invoker对象一接口@SPI("javassist")publicinterfaceProxyFactory{/***createproxy.......