首页 > 其他分享 >还在为项目初始化、依赖管理问题困扰?Dubbo Initializer 来了!

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

时间:2023-05-12 16:03:58浏览次数:45  
标签:初始化 Dubbo 项目 boot dubbo Initializer org

作者: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/,你将看到以下界面:

image.png

选择 Dubbo 版本

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

image.png

录入项目基本信息

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

image

选择项目结构

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

image

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

选择依赖组件

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

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

image.png

基于以上选项,生成的项目将以 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 可同时选中。

生成项目模板

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

image.png

解压的 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/

标签:初始化,Dubbo,项目,boot,dubbo,Initializer,org
From: https://www.cnblogs.com/alisystemsoftware/p/17394418.html

相关文章

  • git初始化项目仓储
    CommandlineinstructionsGitglobalsetupgitconfig--globaluser.name"用户名"gitconfig--globaluser.email"git账号"Createanewrepositorygitclone服务器仓储地址cdtesttouchREADME.mdgitaddREADME.mdgitcommit-m"addREADME......
  • 在C#中使用默认值初始化字符串数组的3种方式
    在本文中,您将学习到新建字符串数组如何设置默认值。数组是可以使用索引访问的相同类型的元素的集合。对于字符串数组,每个元素都是一个字符串值。在C#中创建新的字符串数组时,默认值为null。但是,在某些情况下,您可能希望使用特定的默认值而不是null初始化字符串数组。例如,希望A......
  • C++ 类和对象: 初始化列表
    1.回顾构造函数构造函数是6个默认的成员函数之一,完成对象初始化的工作而在构造函数中,有两种初始化对象的方式,初始化列表和函数体内赋值首先来回顾一下用函数体内赋值方法进行初始化#include<iostream>usingnamespacestd;classDate{public: Date(intyear=1,......
  • Jmeter - dubbo插件测试dubbo接口
    转载:https://blog.csdn.net/baidu_28340727/article/details/125570560一、背景对于如何使用Jmeter测试http接口,大家都已经比较熟悉,网上相关的知识也很多。但随着微服务越来越流行,仅仅会测试http接口已经远远不够。Dubbo作为当下非常流行的RPC接口,学习如何测试Dubbo接口已经成为......
  • (转)Dubbox Dubbo 扩展
    Dubbo 是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的SOA基础框架。作为一个重要的技术研究课题,在当当网我们根据自身的需求,为Dubbo实现了一些新的功能,并将其命名为Dubbox(即DubboeXtensions)。主要的新功能包括:支持......
  • 关于Kubernetes-v1.23.6-master节点的初始化操作
    当我们在master节点、安装部署完docker与Kubernetes/k8s相关的软件后,并启动(docker,kubelet)后,接下来就是需要对master节点进行初始化操作了如下,这里笔者使用的版本的为Kubernetes-v1.23.6,初始化是使用kubeadminit命令,详细的参数如下所示:[root@k8s-masterqq-5201351]#kubea......
  • 关于Kubernetes-v1.23.6-初始化时报错[kubelet-check] It seems like the kubelet isn
    笔者今天在对k8s,v1.23.6版本的的master节点使用如下命令进行初始化时[root@k8s-masterqq-5201351]#kubeadminit\>--apiserver-advertise-address192.18.106.87\>--image-repositoryregistry.aliyuncs.com/google_containers\>--kubernetes-versionv1.23.6\>--......
  • 关于Kubernetes-v1.23.6-初始化时报错[WARNING FileExisting-tc]: tc not found in sy
    今天笔者在部署Kubernetes-v1.23.6版本时,在对master节点使用如下命令进行初始化时,报错:[WARNINGFileExisting-tc]:tcnotfoundinsystempath当然其实也从字符意义上来看,只能算是WARNING提醒,不会影响主要的功能和结果,但既然有这个提醒,就可能就在某些地方是有轻微影响的,为了......
  • rock和yubuntu安装后需要做的初始化操作
    Rock和Ubuntu安装后需要做的初始化操作一.CentOS安装后必需所做的初始化操作#关闭SELinuxsed-i'/^SELINUX=/cSELINUX=disabled'/etc/selinux/config#关闭防火墙systemctldisable--nowfirewalld#支持光盘,/misc/cd对应就是光盘内容yum-yinstallautofssystemctlenable......
  • numpy.empty—返回给定形状和类型的未初始化新数组
    语法格式numpy.empty(shape, dtype=float, order='C', *, like=None)参数解释:shape:空数组的形状dtype:数据类型order:在内存中以行("C")或列("F")顺序存储多维数据,默认为"C"返回未初始化(任意)数据给定形状,dtype,和顺序的数组注意:与numpy.zero不同,numpy.empty不会......