Spring Cloud Alibaba 搭建流程(项目基础搭建)

213 阅读3分钟

学习前提

  1. 已经正确配置好nacos服务
  2. 已经正确安装MySQL8及以上的版本
  3. 对这两个内容有初步的了解环境搭建教程

学习目标:

  1. 学习Spring Cloud Alibaba 的正确基础搭建流程
  2. 学习新版本Nacos3.0.2和Spring项目中版本不兼容问题如何解决

开始搭建

父项目的创建

打开idea创建父项目,应为父项目不需要写代码,所以仅保留pom文件即可 在这里插入图片描述

父项目pom文件

<?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>org.xinghai</groupId>
    <artifactId>spring-cloud-alibaba</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>xinghai-common-service</module>
        <module>xinghai-order-service</module>
        <module>xinghai-payment-service</module>
    </modules>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.version>3.3.4</spring-boot.version>
        <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
        <spring-cloud.version>2023.0.2</spring-cloud.version>
        <spring-cloud-starter-alibaba-nacos-discovery.version>2023.0.1.2</spring-cloud-starter-alibaba-nacos-discovery.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <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>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>${spring-cloud-starter-alibaba-nacos-discovery.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

子项目创建

  1. 名字分别为 xinghai-common-service ,xinghai-order-service,xinghai-payment-service
  2. 创建完城后在这里插入图片描述

子项目功能讲解

  1. xinghai-common-service 用来储存公共的实体类,方法等,不用创建启动类
  2. xinghai-order-service 有关订单的服务
  3. xinghai-payment-service 有关支付的服务

本项目的核心目的是帮助新手快速掌握 Spring Cloud Alibaba 微服务项目的搭建流程。需要说明的是,这只是一个入门级的示例,真实的项目搭建远非如此简单—— 实际开发中会涉及更多项目间的嵌套关系、复杂的服务链接、分布式事务处理、高可用架构设计等一系列进阶内容。

当你真正开始动手搭建属于自己的微服务项目时,相信你会逐渐理解作者简化示例的良苦用心:先掌握核心流程和基础架构,再逐步深入复杂场景,这是学习技术的高效路径。

推荐一个优质的微服务学习项目,帮助你进一步提升:

www.macrozheng.com/


子项目pom文件

==xinghai-common-service==

<?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>
    <parent>
        <groupId>org.xinghai</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>xinghai-common-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.38</version>
        </dependency>
    </dependencies>

</project>

==xinghai-payment-service==

<?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>
    <parent>
        <groupId>org.xinghai</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>


    <artifactId>xinghai-payment-service</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.xinghai</groupId>
            <artifactId>xinghai-common-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

</project>

==xinghai-order-service自己写==

启动服务验证结果

进入这个页面后查看结果 nacos服务页面在这里插入图片描述 如果有这两个服务就说明启动成功 这是我的nacos配置,其中需要注意两个端口号

nacos.server.main.port=8848 nacos.console.port=8080

#--------------- Nacos Common Configurations ---------------#

# Nacos Server Main port
nacos.server.main.port=8848

# Network Related Configurations
# ??????IP????????
# nacos.inetutils.ip-address=
nacos.inetutils.ip-address=127.0.0.1
#如果不设置address,你需要访问自己电脑上的ip地址
spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=123456
db.driver.class.name=com.mysql.cj.jdbc.Driver
# Core Related Configurations
# ????????????
nacos.standalone=true

# MemberLookup??????????????jmenv.tbsite.net???
nacos.core.member.lookup.type=file
# ???????????????
nacos.member.list=

#--------------- Nacos Web Server Configurations ---------------#

# Nacos Server Web context path
nacos.server.contextPath=/nacos

# Access Log Related Configurations
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=file:.

# API Related Configurations
server.error.include-message=ALWAYS

#--------------- Nacos Console Configurations ---------------#

# Nacos Console Main port
nacos.console.port=8080
nacos.console.contextPath=
nacos.console.remote.server.context-path=/nacos

#--------------- Nacos Plugin Configurations ---------------#

# Auth Plugin Related Configurations
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=false
nacos.core.auth.admin.enabled=true
nacos.core.auth.console.enabled=true
nacos.core.auth.caching.enabled=true
# ?????????????????
nacos.core.auth.server.identity.key=SecretKey01234567890123456789012345678901234567890123456789
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000

# ??????????Nacos 3.x???
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
nacos.core.auth.plugin.nacos.token.security.key=AnotherSecretKey01234567890123456789


# Istio Plugin Related Configurations
nacos.istio.mcp.server.enabled=false

#--------------- Nacos Experimental Features Configurations ---------------#

# K8s Related Configurations
nacos.k8s.sync.enabled=false

# Deployment Type Configuration????????
nacos.deployment.type=merged



版本说明

1.作者不建议你们使用高版本,真正公司开发的时候也用不到 2. 我在创建这个项目时候遇见很多莫名其妙的版本错误

  1. 如果你在跟着我的文档做项目时出现版本错误,请试试将这个依赖引入到父项目中,并且子项目也要有
     		<dependency>
                     <groupId>com.fasterxml.jackson</groupId>
                     <artifactId>jackson-bom</artifactId>
                     <version>${jackson.version}</version>
                     <scope>import</scope>
                     <type>pom</type>
            </dependency>
<jackson.version>2.18.3</jackson.version>
  1. nacos3的版本==引用nacos官网上的内容==在这里插入图片描述

Nacos3.0的整体架构以一致性协议,通信模块,其他核心基础功能模块为基座,承载出注册中心、配置中心、AI Registry、协议增强等功能;同时通过各类多语言SDK,桥接各个生态组件。 架构的左右两侧,分别是Nacos的插件以及Nacos的一些拓展组件,他们一起构成了Nacos3.0的整体架构。