手把手教你在 IDEA 中创建一个 Spring Cloud Alibaba 工程(一)

创建工程之前,先了解下版本对应关系
在这里插入图片描述
下面事例用的是
spring Cloud Goxton.SR9
ALibaba 2.2.6.RELEASE
SpringBoot 2.3.2.RELEASE

Spring脚手架创建

构建项目:约定 > 配置 > 编码

父工程

  • 在IDEA中新建父工程(父工程用于约定整个SpringCloud项目的版本)

在这里插入图片描述
在这里插入图片描述

  • Spring Boot版本(随便选择,后面需要修改)

在这里插入图片描述

  • 删掉src文件目录并引入依赖:

在这里插入图片描述

  • 依赖
<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-alibaba</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-alibaba</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
        <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

common

然后新建一个Module:common,以后主要是放置公共实体类以及公共工具类以及公共依赖,所以不需要启动类,以及test
在这里插入图片描述

在这里插入图片描述
插入一个知识点

maven-archetype-quickstart 默认的Archetype,基本内容包括:

1.一个包含junit依赖声明的pom.xml
2.src/main/java主代码目录及一个名为App的类
3.src/test/java测试代码目录及一个名为AppTest的测试用例

在这里插入图片描述
在这里插入图片描述

service

用上面的方法继续新建一个Module:service 用来放各种服务

entity

用上面的方法继续新建一个Module:entity 用来放实体对象

创建springBoot服务

在service 模块下新建springboot 服务项目 user
在这里插入图片描述

在这里插入图片描述
同理再创建一个exam 服务

目前的工程目录是这样的
在这里插入图片描述

引入依赖

公共common引入Nacos注册发现依赖 以及 springboot的web依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--nacos client-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

两个新建的module引入commons

        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

启动Nacos 并将服务注册上去

如何启动Nacos参考我之前的博文 Nacos2.0.3 Windows下的启动与配置

启动user,exam两个服务后查看Nacos 控制台
在这里插入图片描述

可以看到已经成功注册到Nacos服务中心

引入openfeign实现服务调用(服务可以互相调用,所以依赖可以加在公共服务里)

在common 的pom 中加入

<!--openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>

然后在服务入口类加入@EnableFeignClients注解
在这里插入图片描述
exam服务写个接口:
在这里插入图片描述

user服务添加新建个feign包,用来存放服务调用接口
在这里插入图片描述

然后写user服务接口调用exam服务的接口:
在这里插入图片描述

访问
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
说明实现了实现负载均衡

实现流量卫兵的监控

公共引入依赖

<!--sentinel依赖-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>

然后配置user,exam服务的配置文件
在这里插入图片描述

    sentinel:
      enabled: true
      transport:
        dashboard: 127.0.0.1:8080 #sentinel 控制台地址
        port: 8719 #这是固定的

先看下sentinel控制台,暂时没有对应的服务 sentinel控制台获取
在这里插入图片描述
访问接口后出现了如下内容
在这里插入图片描述
流量卫兵的监控完成了

管理配置文件(统一配置管理中心)

common引入依赖

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

然后nacos新建一个生产命名空间:
在这里插入图片描述
然后去生产环境中配置:
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/2c40f3033bb04dbc9d39be11ff617c5d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5Lya5ZCJ5LuW55q

然后修改user服务的application.yml文件为bootstrap.yml

如放在application.yml会导致项目启动报找不到配置属性错误,原因:application.yml与bootstrap.yml加载顺序优先级问题

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

application.yml(application.properties)
应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

加载顺序:bootstrap.yml > application.yml > application-dev(prod).yml > …

运行
在这里插入图片描述
说明启动成功

gateway

新建一个module 【gateway】并引入依赖 (mvc的web依赖跟gateway依赖冲突并且后续common还会引入很多jar包 网关这也用不到 所以gateway依赖自己单独引入)

在这里插入图片描述

配置文件

server:
  port: 3333
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.31.108:8848
        password: nacos
#    sentinel:
#      enabled: true
#      transport:
#        dashboard: 127.0.0.1:8080 #sentinel 控制台地址
#        port: 8719 #这是固定的
    gateway:
      globalcors:
        discovery:
          locator:
            enabled: true

        default-filters: #全局用于配置所有路由共享过滤器
        - StripPrefix=1 #去掉- Path=/user 前缀
        - PreserveHostHeader #发送原主机头
      routes:
      - id: user #指定唯一标识
        uri: lb://user
        predicates:
        - Path=/user/** #指定路由规则


      - id: exam #指定唯一标识
        uri: lb://exam
        predicates:
        - Path=/exam/** #指定路由规则


management:
  endpoints:
    web:
      exposure:
        include: "*"   #暴露路由的规则端点  /actuator/gateway/routes

StripPrefix是个什么东东?可以参考我的另一个博文 springCloud Gateway StripPrefix和PrefixPath过滤器的区别

启动
在这里插入图片描述
成功了
在这里插入图片描述
在这里插入图片描述

通过访问网关都能跳转到相应的服务接口上

负载均衡
通过gateway访问user服务,user服务调用的exam服务
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee8e74abe7994e88840a41b4c55a6f3b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5Lya5ZCJ5LuW55qE6IKM6IKJ55S35LiN5piv5aW955qE5oyo6Lii55S3,size_20,color_FFFFFF,t_70,g_se,x_16

到这里呢 一个简单springcloudAibaba 工程就算搭建完成了 后期继续加入 redis rocketMQ mysql MyBatis-Plus jwt 等 就是一个可以用于实际开发工程了

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用 Spring Boot 3 开发一个前后端分离的生产级系统需要以下步骤: 第一步:环境准备 1. 安装 Java 开发工具包(JDK) 2. 安装集成开发环境(IDE),如Eclipse或IntelliJ IDEA 3. 安装Maven构建工具 4. 安装数据库(如MySQL)和相关工具(如MySQL Workbench) 第二步:创建后端项目 1. 使用IDE创建一个新的Spring Boot项目 2. 配置项目的基本信息,如项目名称、包名等 3. 添加必要的依赖,如Spring Boot Starter Web、Spring Data JPA等 4. 定义实体类、控制器、服务等后端代码 第三步:创建前端项目 1. 使用前端开发工具,如Vue.js或React.js,创建一个新的前端项目 2. 配置项目的基本信息,如项目名称、包名等 3. 定义前端路由、页面、组件等前端代码 第四步:前后端集成 1. 在后端项目配置跨域访问,允许前端项目访问后端接口 2. 在前端项目调用后端接口,实现数据的交互 第五步:开发和测试 1. 根据需求逐步开发后端和前端功能模块 2. 使用测试框架,如JUnit和Selenium,对系统进行单元测试和端到端测试 第六步:部署和上线 1. 打包后端项目为可执行的JAR文件 2. 部署JAR文件到生产环境的服务器上 3. 配置服务器的环境变量、数据库连接等 4. 启动服务器,验证系统是否正常运行 通过以上步骤,我们可以完成一个使用Spring Boot 3开发的前后端分离的生产级系统。这种架构可以提高开发效率、降低系统耦合性,并且适合大型项目的开发和部署。同时,我们还可以根据实际需求,进一步优化系统性能、可维护性和安全性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值