EDAS: Spring Boot 开发 Dubbo 应用

简介: 开发环境:InteliJ IDEA COMMUNITY操作系统 :macOS Mojave注册中心:为了便于本地开发,本教程使用 EDAS 提供的轻量级配置中心,轻量级配置中心包含了 EDAS 服务注册中心的基本功能。

开发环境:InteliJ IDEA COMMUNITY

操作系统 :macOS Mojave

注册中心:为了便于本地开发,本教程使用 EDAS 提供的轻量级配置中心,轻量级配置中心包含了 EDAS 服务注册中心的基本功能。


1. 注册中心安装与配置


轻量级配置中心配置及使用请单独参考:轻量级配置中心

验证配置中心是否可以正常使用:

打开浏览器,在地址栏输入 jmenv.tbsite.net:8080,回车,可看到轻量配置中心首页。


f63b2066297bcaa6c3dc67c081e022cf8d87e34d

bd31854b500a5b32b9c53ce042a9c8a1a337a551

61ecf3a5814033508ef611af3be36b154c25fe8d

cb47a648ea87ba67e67f2221c200023b13ffabc2


2. 创建 dubbo-provider


【File】->【New】->【Project】->【maven】->【Next】-> 自定义输入GroupId, ArtifactId

a. 主要依赖: Spring Boot 2.0.6.RELEASE(starter-web, actuator),dubbo-spring-boot-starter (0.2.0),edas-dubbo-extension (1.0.1)

<?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.alibaba.edas.boot</groupId>
    <artifactId>dubbo-boot-provider</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.edas</groupId>
            <artifactId>edas-dubbo-extension</artifactId>
            <version>1.0.1</version>
        </dependency>
    </dependencies>

</project>


b. 创建接口及方法

6c8e557ee8b5af7285034e8391a64f0355df5d2e

创建示例:IEatService,提供方法:eatFood()

package me.gary.edas.boot;

public interface IEatService {
    String eatFood(String str);
}


c. 实现该接口方法

package me.gary.edas.boot;

import com.alibaba.dubbo.config.annotation.Service;

@Service
public class EatServiceImpl implements IEatService {
    public String eatFood(String name) {
        return "Please eat " + name + " (from Dubbo with Spring Boot)";
    }
}

d. 配置 dubbo 服务

src/main/resources 路径下创建 application.properties


dubbo.scan.basePackages: 接口服务实现类,@Service 注解所在的 package,若有多个,用逗号隔开

dubbo.registry.address: 前文提到的,本地已配置运行的轻量配置中心地址


 
 
# Base packages to scan Dubbo Components (e.g @Service , @Reference)
dubbo.scan.basePackages=me.gary.edas.boot
dubbo.application.name=dubbo-provider-springboot
dubbo.registry.address=edas://127.0.0.1:8080


e. 开发 SpringBoot 入口类,并启动

package me.gary.edas.boot;

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

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


48d01e9cdc3cffa7bad4a9f20d5891238ae8611d


35.gif35.gif35.gif spring boot 的 tomcat 启动失败!!"address already in use"。回忆一下,轻量注册中心是不是已经启动了8080的web页面啊?是的。


f. 修改 spring boot 配置,指定端口为非8080端口,本示例使用8081。

最终,application.properties 配置如下:

# Base packages to scan Dubbo Components (e.g @Service , @Reference)
dubbo.scan.basePackages=me.gary.edas.boot
dubbo.application.name=dubbo-provider-springboot
dubbo.registry.address=edas://127.0.0.1:8080
server.port=8081


“Tomcat started on port(s): 8081 (http) with context path ''”,消费者在指定8081端口成功运行。

1176d2459cbc2d12737f6299443c489ed387bca7


打开“jmenv.tbsite.net:8080”,

c8acefd249665635150e285166c0c2005dc0eec1


可以看到服务提供者里已经包含了com.alibaba.edas.boot.IEatService,且可以看到该服务的服务分组和提供者 IP。


3. 创建 dubbo-consumer


a. pom 依赖配置,同 provider

b. 创建接口及方法,同 provider

c. 此项目调用以 Controller 方式为例,创建 ConsumerController


package me.gary.edas.boot;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

    @Reference
    private IEatService eatService;

    @RequestMapping("/eatFood/{food}")
    public String eatFood(@PathVariable String food) {
        return eatService.eatFood(food);
    }
}

d. 配置 dubbo 服务

src/main/resources 路径下创建 application.properties


特别注意:同样,别忘记了 provider 中出现的问题。spring boot 默认在8080端口启动 tomcat,此例 consumer 分配8082。

dubbo.application.name=dubbo-consumer-springboot
dubbo.registry.address=edas://127.0.0.1:8080
server.port=8082

e. 开发 SpringBoot 入口类,并启动

package me.gary.edas.boot;

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

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

017767fce2ccd402071ce9cd9834a604f9ab7790


422d6c4fd199dd860d8d3bcaa6a35f0699e8e43b


通过配置中心页面,可以看到服务调用者 com.alibaba.edas.boot.IEatService 已经注册成功。


f. 通过 Consumer  暴露的 RESTful 接口,调用 provider 的 eatFood() 接口。


本例 Consumer 注册端口为:8082,读者需根据 application.properties 中指定的端口,修改以下指令。

curl http://localhost:8082/eatFood/apple


caf88ea321d87f28618b4989fed721989b1cddff


Yay! RESTful 接口 --> consumer --> provider,该流程验证通过。




相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas&nbsp;
目录
相关文章
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
42 4
|
7天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
18 2
|
23天前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
17 4
|
27天前
|
XML Java 数据格式
提升效率!Spring Boot 开发中的常见失误轻松规避
本文深入探讨了在 Spring Boot 开发中常见的失误,包括不当使用注解、不良异常处理、低效日志记录等,提供了有效的规避策略,帮助开发者提升代码质量和系统性能,构建更健壮、高效的应用程序。
|
12天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
25 0
|
2月前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
2156 16
|
1月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
26 1
|
1月前
|
开发框架 Java API
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
53 0
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
46 0
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
79 0