实战指南:如何在Spring Boot中无缝整合Dubbo【四】

欢迎来到我的博客,代码的世界里,每一行都是一个故事



实战指南:如何在Spring Boot中无缝整合Dubbo【四】

    • 前言
    • 项目结构
    • 主项目(作为主pom)
    • 接口
    • 服务提供者
      • properties文件
      • 实现类
    • 服务消费者
      • properties
      • 接口层
    • 实现效果图

前言

微服务架构已经成为现代应用开发的热门趋势,而Dubbo作为一款强大的分布式服务框架,与Spring Boot的结合是构建高性能微服务应用的理想选择。就像拼装一把锋利的刀刃,让我们一起揭开Spring Boot整合Dubbo的神秘面纱,探索如何在分布式世界中获得竞争优势。

项目结构

实战指南:如何在Spring Boot中无缝整合Dubbo【四】_第1张图片

主项目(作为主pom)


<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.0modelVersion>

    <groupId>fun.bogroupId>
    <artifactId>dubbo-studysartifactId>
    <version>1.0-SNAPSHOTversion>
    <packaging>pompackaging>
    <modules>
        <module>dubbo-providermodule>
        <module>dubbo-interfacemodule>
        <module>dubbo-consumermodule>
    modules>

    <properties>
        <java.version>1.8java.version>
        <maven.compiler.source>8maven.compiler.source>
        <maven.compiler.target>8maven.compiler.target>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <dubbo-version>2.7.8dubbo-version>
        <spring-boot.version>2.3.0.RELEASEspring-boot.version>
    properties>
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-dependenciesartifactId>
                <version>${spring-boot.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>

            
            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-dependencies-bomartifactId>
                <version>${dubbo-version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubbo-spring-boot-starterartifactId>
                <version>${dubbo-version}version>
            dependency>

            <dependency>
                <groupId>org.apache.dubbogroupId>
                <artifactId>dubboartifactId>
                <version>${dubbo-version}version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframeworkgroupId>
                        <artifactId>springartifactId>
                    exclusion>
                    <exclusion>
                        <groupId>javax.servletgroupId>
                        <artifactId>servlet-apiartifactId>
                    exclusion>
                    <exclusion>
                        <groupId>log4jgroupId>
                        <artifactId>log4jartifactId>
                    exclusion>
                exclusions>
            dependency>
        dependencies>
    dependencyManagement>
    <dependencies>
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>${dubbo-version}version>
        dependency>
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubboartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <version>${spring-boot.version}version>
        dependency>
        
        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-frameworkartifactId>
            <version>4.0.1version>
        dependency>
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-dependencies-zookeeperartifactId>
            <version>${dubbo-version}version>
            <type>pomtype>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>

project>

接口

package fun.bo.api;

/**
 * @author todoitbo
 * @date 2024/1/12
 */
public interface TestDubboService {

    String sayHello(String name);
}

服务提供者

properties文件

# 服务端口
server.port=18081
# 应用程序名称
spring.application.name=dubbo-provider
# Dubbo服务扫描路径
dubbo.scan.base-packages=fun.bo

# Dubbo 通讯协议
dubbo.protocol.name=dubbo
# Dubbo服务提供的端口, 配置为-1,代表为随机端口 默认20880
dubbo.protocol.port=-1

## Dubbo 注册器配置信息
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache
dubbo.spring.provider.version = 1.0.0

实现类

package fun.bo.iml;

import fun.bo.api.TestDubboService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Value;

/**
 * @author todoitbo
 * @date 2024/1/12
 */
@DubboService(version = "${dubbo.spring.provider.version}")
public class TestDubboServiceImpl implements TestDubboService {

    @Override
    public String sayHello(String name) {
        return "hello " + name;
    }
}

服务消费者

properties

# 服务端口
server.port=18084
#服务名称
spring.application.name=dubbo-spring-consumer
#服务版本号
dubbo.spring.provider.version = 1.0.0
#消费端注册器配置信息
dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.consumer.check=false
dubbo.registry.file = ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache

接口层

package fun.bo.controller;

import fun.bo.api.TestDubboService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author todoitbo
 * @date 2024/1/12
 */
@RestController
public class TestDubboController {

    @DubboReference(version = "${dubbo.spring.provider.version}")
    private TestDubboService testDubboService;

    @GetMapping("/test-dubbo/{name}")
    public String testDubbo(@PathVariable String name) {
        return testDubboService.sayHello(name);
    }
}

实现效果图

实战指南:如何在Spring Boot中无缝整合Dubbo【四】_第2张图片

你可能感兴趣的:(#,dubbo,spring,boot,dubbo,后端)