构建Spring Cloud Alibaba模板项目
第 4.8 节主要介绍了如何创建一个 Spring Boot
项目,并使用 IDEA
编辑器开发 Spring Boot
项目。根据笔者的开发经验,在新建 Spring Boot
项目时,建议开发人员使用 Spring Initializr
向导构建。因为使用该方式生成的代码比较齐全,能够避免人为错误,可以直接使用,更加节省时间。Spring Boot
项目的启动方式也列举了 IDEA
编辑器直接启动、Maven
插件启动和命令行启动三种。以上三种方式都很简单,在练习时读者可以自行选择适合自己的启动方式。
在掌握了 Spring Boot
框架的基本开发技巧后,后续的章节内容就要开始过渡到 Spring Cloud Alibaba
微服务项目开发实战。在此之前构建一个 Spring Cloud Alibaba
的基础模板项目,在后续章节中整合微服务架构的组件时,修改一下这个基础模板项目就可以直接上手开发了,非常方便。
构建 Spring Cloud Alibaba
基础模板项目的步骤如下。
先创建一个 Maven
项目,在 pom.xml
配置文件中将 packaging
设置为 pom
,将 groupId
设置为 ltd.newbee.cloud
。之后依次加入 Spring Boot
依赖、Spring Cloud
依赖和 Spring Cloud Alibaba
依赖。
然后新建一个模板,或者直接把之前创建的 Spring Boot
复制过来,命名为 service-demo
,Java
代码的包名为 ltd.newbee.cloud
。在该模板的 pom.xml
配置文件中增加 parent
标签,与上层 Maven
建立好关系。
接着复制该模板为 service-demo2
,并修改项目中的 application.properties
的端口号,与 service-demo
做一下区分。
最终的项目目录结构如图 4-37 所示。

这是一个标准的 Maven
多模块父子工程,spring-cloud-alibaba-demo
为 root
节点,service-demo
和 service-demo2
为两个子节点。
其中,root
节点的 pom.xml
配置如下:
<?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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ltd.newbee.cloud</groupId>
<artifactId>spring-cloud-alibaba-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-alibaba-demo</name>
<packaging>pom</packaging>
<description>Spring Cloud Alibaba Demo</description>
<modules>
<module>service-demo</module>
<module>service-demo2</module>
</modules>
<properties>
<spring.boot.version>2.6.3</spring.boot.version>
<spring.cloud.dependencies.version>2021.0.1</spring.cloud.dependencies.version>
<spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<url>https://maven.aliyun.com/repository/central/url</url>
<name>aliyun</name>
</repository>
</repositories>
</project>
子节点的 pom.xml
配置如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ltd.newbee.cloud</groupId>
<artifactId>service-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>service-demo</name>
<description>Spring Cloud Alibaba Service Demo</description>
<parent>
<groupId>ltd.newbee.cloud</groupId>
<artifactId>spring-cloud-alibaba-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
最后,分别启动两个子节点中的 Spring Boot
实例并访问,结果如图 4-38 所示。
代码没有报错,并且可以正常启动和访问,Spring Cloud Alibaba
模板项目就构建完成了。这个项目只是一个模板项目,并没有实际的功能开发,项目的相关配置也主要是把模板关系建立好、把 Spring Cloud Alibaba
及相关的依赖配置好。

本章主要讲解了基础开发环境的搭建,同时结合实际的编码帮助读者熟悉 Spring Cloud Alibaba
技术栈的基础编码,其实与日常开发的项目并没有特别大的差别,希望读者不要觉得 Spring Cloud Alibaba
微服务架构项目的开发很困难。本章设计基础代码演示的主要目的是让读者顺利地过渡到项目实战阶段,现在已经有了基础的微服务模板项目,在后续的章节再去整合微服务架构中的各个组件就比较轻松了,只需要根据不同的组件增加 pom 依赖和一些基础配置就可以了。
另外,本书使用的 MySQL
数据库版本为 5.7,为了避免出现一些问题,建议读者使用 MySQL5.7 或以上版本。在后续章节中讲解 Nacos
、Sentinel
、Seata
等组件的数据持久化和分布式事务的演示时都会用到 MySQL
数据库。在最终的实战项目中会使用 Redis
数据库,读者如果想尽快上手实战项目,就要在计算机上安装并配置好 Redis
。