Loading

SpringCloudAlibaba项目搭建流程

Spring Cloud Alibaba作为一个微服务架构,往往会创建一个父工程管理整个项目的依赖关系。每个子项目代表一个微服务,可以各自选择所需的组件进行使用。

因此,搭建Spring Cloud Alibaba项目总的来说包括两个步骤:

  1. 创建父工程,统一管理全局微服务依赖。
  2. 创建子服务,引入所需的组件进行业务开发。

1 父工程

在IDEA中,我们首先需要创建空的Maven父工程。

Spring Cloud Alibaba依赖于Spring Boot和Spring Cloud,我们需要在父工程的pom.xml中添加全局的微服务依赖管理:

<parent>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.3.12.RELEASE</version>  
    <relativePath/>  
</parent>
  
<dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>org.springframework.cloud</groupId>  
            <artifactId>spring-cloud-dependencies</artifactId>  
            <version>Hoxton.SR12</version>  
            <type>pom</type>  
            <scope>import</scope>  
        </dependency>  
        <dependency>  
            <groupId>com.alibaba.cloud</groupId>  
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>  
            <version>2.2.9.RELEASE</version>  
            <type>pom</type>  
            <scope>import</scope>  
        </dependency>  
    </dependencies>  
</dependencyManagement>

spring-boot-starter-parent管理着Spring Boot各个starter的对应版本,spring-cloud-dependencies管理着Spring Cloud各个组件的对应版本,spring-cloud-alibaba-denpendencies管理着Spring Cloud Alibaba各个组件的对应版本。

在子服务中,引入组件依赖时不必指定版本,会从上述依赖管理中获取对应的版本信息,避免依赖冲突。

需要注意的是,Spring Boot、Spring Cloud和Spring Cloud Alibaba这三者之间也存在着适配版本,需要我们手动进行指定。

最新的适配版本可以查看官网(版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com))。

2 子服务

每个子服务都是一个相对独立的项目,我们可以根据业务引入所需的分布式组件。

每个分布式组件都提供了特定的一小块功能,我们可以按需引入:

  • 服务注册与发现:spring-cloud-starter-alibaba-nacos-discovery
  • 配置中心:spring-cloud-starter-alibaba-nacos-config
  • 服务熔断:spring-cloud-starter-alibaba-sentinel
  • 服务路由:spring-cloud-starter-gateway
  • 服务调用:spring-cloud-starter-openfeign
  • 分布式事务:spring-cloud-starter-alibaba-seata
  • ……

除了分布式组件,我们也可以按需引入特定的第三方依赖,例如:spring-boot-starter-web

这些分布式组件都是相互独立的功能,它们会在微服务的特定业务模块下起作用,我们在使用时只需要分别配置即可。

我们在学习和使用分布式组件时,可以将它们当作是独立的个体,类似于Spring MVC和MyBatis的关系,这样可以大大减小学习的压力。

posted @ 2023-02-11 13:41  Xianuii  阅读(1681)  评论(0编辑  收藏  举报