还在为项目初始化、依赖管理问题困扰?Dubbo Initializer 来了!

news2024/11/17 19:51:50

作者:Dubbo 社区

通过这篇文章,你将学习如何在 1 分钟内用 Dubbo Initializer 模板快速创建 Dubbo Spring Boot 项目,帮你解决项目初始化问题。

什么是 Dubbo Initializer?

Dubbo Initializer 是一款帮助开发者快速生成 Dubbo Spring Boot 项目的 UI 工具,它帮助生成具有基本 Dubbo 配置、代码示例、Web、SQL 等微服务组件的项目源码并提供 ZIP 包下载方式。下载后,你就可以将项目模板代码导入 IDE 开发环境并增加自己的业务逻辑,免去从头初始化项目的各种繁琐操作。

想马上体验使用 Dubbo Initializer 创建 Spring Boot 项目,请通过浏览器访问以下链接:https://start.dubbo.apache.org/

注:Initializer 仍在持续更新中,更多 Dubbo Feature 的支持将会陆续发布。

使用 Intializer 创建 Dubbo Spring Boot 微服务项目

使用浏览器打开 Initializer 地址:https://start.dubbo.apache.org/,你将看到以下界面:

在这里插入图片描述

选择 Dubbo 版本

Initializer 会使用 dubbo-spring-boot-starter 创建 Spring Boot 项目,因此我们首先需要选择 Dubbo 与 Spring Boot 的版本。

在这里插入图片描述

录入项目基本信息

接下来,填入项目基本信息,包括项目坐标、项目名称、包名、JDK 版本等。

在这里插入图片描述

选择项目结构

有两种项目结构可共选择,分别是 单模块 和 多模块,在这个示例中我们选择 单模块。

在这里插入图片描述

  • 单模块,所有组件代码存放在一个 module 中,特点是结构简单。
  • 多模块,生成的项目有 API、Service 两个模块,其中 API 用于存放 Dubbo 服务定义,Service 用于存放服务服务实现或调用逻辑。通常多模块更有利于服务定义的单独管理与发布。

选择依赖组件

我们为模板默认选择如下几个依赖组件:

  • Dubbo 组件
    • Java Interface
    • 注册中心,zookeeper
    • 协议 TCP
  • 常用微服务组件
    • Web
    • Mybatis
    • 模版引擎

在这里插入图片描述

基于以上选项,生成的项目将以 Zookeeper 为注册中心,以高性能 Dubbo2 TCP 协议为 RPC 通信协议,并且增加了 Web、Mybatis 等组件依赖和示例。

注意:上面选中的 Dubbo 组件也都是默认选项,即在不手动添加任何依赖的情况下,打开页面后直接点击代码生成,生成的代码即包含以上 Dubbo 组件。

如手动添加依赖组件,请注意 Dubbo 各个依赖组件之间的隐含组合关系限制,比如

  • 如果选择了【Dubbo Service API】-【IDL】,则目前仅支持选择 【Dubbo Protocol】中的 【HTTP/2】或 【gRPC】 协议。
  • 同一个依赖分组下,相同类型的依赖只能选择一个,比如 【Dubbo Registry&Config&Metadata】分组下,从注册中心视角【Zookeeper】、【Nacos】只能选一个,如果要设置多注册中心,请在生成的代码中手动修改配置。但注册中心、配置中心可以分别选一个,比如 Zookeeper 和 Apollo 可同时选中。

生成项目模板

  • 点击 “浏览代码” 可在线浏览项目结构与代码
  • 点击 “获取代码” 生成项目下载地址

在这里插入图片描述

解压的 ZIP 包下载到本地后,解压并导入 IDE 后即可根据需要开发定制 Dubbo 应用。

示例项目代码解读

以下以生成的单模块代码为例,讲解生成的代码含义。

  1. 服务定义
public interface DemoService {    String hello(String arg);}
  1. 业务逻辑实现
@DubboService
public class DemoServiceImpl implements DemoService {
    public String hello(String arg) {
        // put your microservice logic here
    }
}
  1. 项目配置
dubbo:
  application:
    name: dubbo-demo
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://127.0.0.1:2181
  1. 代码依赖
<dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.apache.dubbo</groupId>
          <artifactId>dubbo-dependencies-zookeeper</artifactId>
          <type>pom</type>
      </dependency>
      <dependency>
          <groupId>org.apache.dubbo</groupId>
          <artifactId>dubbo-spring-boot-starter</artifactId>
      </dependency>
      <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
          <version>2.3.0</version>
      </dependency>
  </dependencies>

总结

Dubbo Initializer 作为全面提升 Dubbo 易用性的一个重要规划,其功能仍在持续演进中。以下是正在推进的一些工作。

IntelliJ IDEA 官方合作

IntelliJ IDEA 2023 近期刚刚发布集成 Dubbo 的官方框架↓

Apache Dubbo in Spring Framework:

https://plugins.jetbrains.com/plugin/20938-apache-dubbo-in-spring-framework

当前,双方社区正在商讨基于 Dubbo Initializer 的集成方案,相信用不了多久,我们就能在你最喜欢的 IDE 中看到 Dubbo 项目模板的官方支持了。

Dubbo Boot Starters

除了 Dubbo Initializer 之外,Dubbo 社区还正在建设一批 Dubbo Boot Starters,目标是让用户能够做到零配置使用 Dubbo 框架,只需要引入 starter 依赖即可,不必关心繁琐的 pom 依赖和默认配置。

请在此快速体验 Dubbo Initializer 吧!

链接:https://start.dubbo.apache.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【0基础也能学会】JMeter:如何开始简单的WEB压力测试?

背景 最近工作上被安排针对Web网站进行性能压测&#xff0c;以评估特定的硬件配置下Web网站可支持的并发用户数。考虑到JMeter是流行的Web性能压测工具&#xff0c;因此趁着这次机会上网查阅了很多关于JMeter的资料&#xff0c;也自己动手进行软件的配置和调测&#xff0c;从最…

前瞻洞察|借助机器学习,揪出利用DNS隐蔽隧道作恶黑手

黑客会利用DNS协议进行违法犯罪活动&#xff0c;那DNS协议到底是什么&#xff1f;它有何作用&#xff1f;为什么会被选作进行作恶的手段&#xff1f;会造成什么危害&#xff1f;怎么检测及研究现状如何&#xff1f;一连串疑问接踵而至。本篇文章中&#xff0c;我们会为大家一一…

【Java多线程编程】Thread类

Thread类是什么&#xff1f; Thread 类是 Java 提供的一个标准库&#xff0c;我们可以通过 Thread 类进行多线程编程。因此&#xff0c;今天我给大家讲解的是如何使用 Thread 类进行线程编程。 详细讲解 Thread 类中的&#xff1a;lambda 表达式、start 方法&#xff08;启动线…

WiFi(Wireless Fidelity)基础(七)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

Cloud Kernel SIG月度动态:发布ANCK 5.10、4.19新版本,ABS新增仓库构建功能

Cloud Kernel SIG&#xff08;Special Interest Group&#xff09;&#xff1a;支撑龙蜥内核版本的研发、发布和服务&#xff0c;提供生产可用的高性价比内核产品。 01 SIG 整体进展 发布 ANCK 5.10-014 版本。 发布 ANCK 4.19-027.2 版本。 ABS 平台新增 OOT 仓库临时构建功…

如何远程控制电脑?3个方法轻松搞定!

案例&#xff1a;如何远程控制电脑&#xff1f; 【我不想时时刻刻都带着自己的电脑&#xff0c;听朋友说可以远程电脑。有没有大神分享一下具体的操作方法&#xff1f;感谢&#xff01;】 随着科技的不断进步&#xff0c;远程控制电脑已经不再是一件难以实现的事情。如今&…

09.python可视化-Seanorn绘制类别关系图boxplot() boxenplot() violinplot()

分类散点图 分类分布图 1). 箱线图 : boxplot() 2).增强箱图boxenplot() 3).小提琴图 :violinplot() 分类统计图 2. 分类分布图 1). 箱线图 应用场景&#xff1a;主要用来显示与类别相关的数据分布。 seaborn.boxplot(xNone, yNone, hueNone, dataNone, orderNone, hue_orde…

GoView 是一个Vue3搭建的低代码数据可视化开发平台

一、总览 开源、精美、便捷的「数据可视化」低代码开发平台 二、整体介绍 框架&#xff1a;基于 Vue3 框架编写&#xff0c;使用 hooks 写法抽离部分逻辑&#xff0c;使代码结构更加清晰&#xff1b; 类型&#xff1a;使用 TypeScript 进行类型约束&#xff0c;减少未知错误…

WiFi(Wireless Fidelity)基础(九)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

MySql -- 事务

目录 1.概念 2.事务的运用场景 3.事务的四大特点 4.执行事务带来的问题 4.1 脏读 4.2 不可重复度 4.3 幻读 5. MySQL中事务的隔离级别 1.概念 事务就是把若干个独立操作打包成一个整体而诞生的一种功能. 2.事务的运用场景 比如&#xff1a;A——>B 转账500 A的余额-500…

【Qt编程之Widgets模块】-007:QStandardPaths类使用方法

1 头文件&#xff1a; #include <QStandardPaths>2 详细说明 QStandardPaths类提供用于访问标准路径的方法&#xff0c;该类包含用于查询本地文件系统上的标准位置的函数&#xff0c;用于常见任务&#xff0c;如特定于用户的目录或系统范围的配置目录。 所谓系统标准路…

[pgrx开发postgresql数据库扩展]6.返回序列的函数编写(1)单值序列

上篇文章是中规中矩的标准计算函数&#xff0c;就算不用pgrx&#xff0c;也是可以正常理解的&#xff0c;所以基本上没有什么对于pgrx框架有关系的东西&#xff08;唯一有关系的东西&#xff0c;应该就是Rust的时间类型与pgrx的时间类型的计算了&#xff09;。 这篇文章会讲一…

Java面试(1)Java概述

文章目录 Java 概述1.什么是Java2. JDK1.5 之后的三大版本3. Jdk和Jre和JVM的区别4. 什么是跨平台性&#xff1f;原理是什么5. Java 语言有哪些特点?6. 什么是字节码&#xff1f;采用字节码的最大好处是什么7. 为什么不全部使用 AOT&#xff08;since JDK9&#xff09; 呢&…

马赛克处理

去取马赛克的网址&#xff1a; Redact • Photo - Free And Private Image Redaction In The Browser https://redact.photo/ REDACT.PHOTO &#xff08;照片马赛克处理在线工具&#xff09;简介 REDACT.PHOTO是一个照片马赛克处理在线工具&#xff0c;能够帮助我们非常方便…

2023自动化测试的10个最佳实践(建议收藏)

虽然大家都知道坚果是非常健康和有营养的&#xff0c;但是&#xff0c;当你尝试吃它的时候&#xff0c;我猜测过程都不会很顺利。现实就是那么相似&#xff0c;我们都知道测试自动化对软件开发有好处&#xff08;就像坚果对我们的身体一样&#xff01;&#xff09;&#xff0c;…

arcgis插件-带属性TXT转SHP数据(支持独立图层、追加到图层)

20230512记录更新 arcgis插件-带属性TXT转SHP数据&#xff08;支持独立图层、追加到图层&#xff09; 这个版本省略掉新建面图层&#xff0c;再在界面进行选择图层的操作。 界面简化到只需要一步操作&#xff0c;选择&#xff08;或者复制&#xff09;TXT文件所在路径&#x…

机器学习(二)决策树原理剖析及python实现

本篇介绍第二个机器学习算法&#xff1a;决策树算法&#xff0c;我们经常使用决策树处理分类问题&#xff0c;近来的调查表明决策树也是最经常使用的数据挖掘算法。 图1所示的流程图就是一个决策树&#xff0c;长方形代表判断模块&#xff08;decision block&#xff09;&…

[Android]AsyncChannel介绍

背景 在WifiManager.java中&#xff0c;随处可见这样的方法调用实现&#xff1a; 代码路径&#xff1a;frameworks/base/wifi/java/android/net/wifi/WifiManager.java public void connect(int networkId, ActionListener listener) {...getChannel().sendMessage(CONNECT_NE…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

视频怎么压缩到20M以内

视频怎么压缩到20M以内&#xff1f;我们知道在很多聊天软件中是限制传输的内容大小的&#xff0c;比如说视频大小会限制20M以内。还有就是我们在发一些邮件时&#xff0c;我们在上传附件的时候也是限制视频大小在20M以内。所以说我们有需要把视频压缩到20M以内的情况。那么针对…