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,该流程验证通过。




相关实践学习
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ACK Serverless,体验微服务应用的部署、访问和高级发布能力。
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;
目录
相关文章
|
6天前
|
监控 Java 应用服务中间件
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
20 6
|
13天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
31 5
|
13天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
27 2
|
15天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
2月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
422 0
|
24天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2月前
|
XML JSON Java
Spring Boot 开发中常见的错误
本文总结了 Java 开发中常见的几个问题及其改进方法,包括:1. 过度使用 `@Component` 注解;2. `@ResponseBody` 注解的错误用法;3. `@Autowired` 的不当使用;4. `application.properties` 管理不善;5. 异常处理不当。每部分详细解释了错误情况和建议的改进方案,并提供了相应的代码示例。
65 11
|
2月前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
59 5
|
2月前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
9月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

热门文章

最新文章