快速创建springboot+springcloud项目(nacos,seata,sentinel,gateway,openfeign)

news2024/11/28 13:50:07

一、创建一个maven项目

1.file->new->project

在这里插入图片描述

2.创建maven项目

在这里插入图片描述

在这里插入图片描述

3.删除src文件夹

在这里插入图片描述

4.在pom.xml文件中引入springboot和cloudAlibaba依赖

在这里插入图片描述

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.6.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

注意:这里springboot和springcloud版本号要相匹配

不清楚可以去官网官网查询
在这里插入图片描述

二、创建公共服务(manage-common)

用于放置其他微服务共同的文件资源以及工具类

1.项目名右键->new->Module

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

2.引入公共依赖

根据自己情况而定

	<dependencies>

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>
    </dependencies>

在这里插入图片描述

三、创建一个微服务(manage-system)

1.步骤和创建common公共服务一样

在这里插入图片描述

2.引入起步依赖和公共服务

在这里插入图片描述

	<dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>manage-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

3.创建启动类

在这里插入图片描述
引入启动类依赖@SpringBootApplication
在这里插入图片描述

4.创建配置文件,根据自己项目进行完善内容

在这里插入图片描述

5.创建contoller,service,mapper等文件及代码实现业务

在这里插入图片描述

6.运行这个微服务

在这里插入图片描述

7.随便访问一个该微服务的接口,调用成功即可

在这里插入图片描述

四、创建另一个微服务(manage-equipment)

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

五、创建和配置nacos服务

1.下载并将nacos文件加入项目中

在这里插入图片描述

在这里插入图片描述

2.添加nacos运行配置

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

3.运行nacos服务(run),并访问首页

在这里插入图片描述

4.在需要用到nacos的服务中引入依赖(manage-equipment,manage-system)

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

在这里插入图片描述

5.在对应服务的application.yml文件中增加配置

  cloud:
    nacos:
      discovery:
        # 配置Nacos注册中心地址
        server-addr: localhost:8848

在这里插入图片描述

6.启动相关服务后在nacos查看是否成功注册

在这里插入图片描述

7.配置管理,创建配置

在这里插入图片描述
自定义文件名,其内容则将项目中application,yml中想要放到nacos管理的内容copy进来即可
在这里插入图片描述

8.对应服务中导入依赖

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

在这里插入图片描述

9.创建bootstrap.yml文件,注释掉application.yml中的内容(因为我在nacos中将其中所有内容都已copy过去,所以我这里全都注释掉)

spring:
  application:
    # 服务名称和配置文件保持一致
    name: system-service  
  profiles:
    # 环境也是和配置文件保持一致
    active: public
  cloud:
    nacos:
      config:
        # 配置文件后缀名
        file-extension: yml
        # 配置中心服务器地址,也就是Nacos地址
        server-addr: localhost:8848

在这里插入图片描述

10.启动服务依旧成功即可

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

六、创建和配置sentinel

1.下载并把文件放入项目中

在这里插入图片描述

2.创建配置应用

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

3.启动服务并访问首页

在这里插入图片描述

4.在对应的服务里导入依赖

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

在这里插入图片描述

5.对应服务配置文件中添加配置

    sentinel:
      transport:
        dashboard: localhost:8858

在这里插入图片描述

6.此时再启动配置好的服务后,去sentinel界面查看

如果没有加载出来就先访问一下对应服务的随便一个接口后再刷新试试
在这里插入图片描述

七、openfeign远程调用

1.导入依赖

        <!-- openfeign 远程调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.启动类加注解

@EnableDiscoveryClient
@EnableFeignClients

在这里插入图片描述

3.编写接口,要加 @FeignClient注解

在这里插入图片描述

4.业务中需要调用时直接使用即可

在这里插入图片描述

八、seata服务

1.下载并将seata文件放入项目

在这里插入图片描述

2.创建配置服务

在这里插入图片描述

3.对涉及的服务导入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency>
     <groupId>io.seata</groupId>
     <artifactId>seata-spring-boot-starter</artifactId>
     <version>1.6.1</version>
</dependency>

在这里插入图片描述

4.结合nacos整合seata

参考这篇博客

5.在seata命名空间中添加对应的事务组映射配置

在这里插入图片描述

在这里插入图片描述

6.在对应微服务中添加seata配置

seata:
  #注册
  registry:
    type: nacos
    nacos:
      # 使用Seata的命名空间,这样才能正确找到seata服务,由于组使用的是SEATA_GROUP,默认配置就是,就不用配了
      namespace: 441a94dc-2a92-43d1-8933-837e6b4bf0df
      username: root
      password: 
  # 配置
  config:
    type: nacos
    nacos:
      namespace: 441a94dc-2a92-43d1-8933-837e6b4bf0df
      username: root
      password: 

在这里插入图片描述

7.启动seata服务后在nacos查看

在这里插入图片描述

8.业务中所有方法增加“@Transactional”,只有发起者增加“@GlobalTransactional”

在这里插入图片描述

9.在微服务启动类上面加上@EnableAutoDataSourceProxy注解

在这里插入图片描述

10.在涉及的数据库中都加上undo_log表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log`  (
  `branch_id` bigint(20) NOT NULL COMMENT '分支事务ID',
  `xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '全局事务ID',
  `context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '上下文',
  `rollback_info` longblob NOT NULL COMMENT '回滚信息',
  `log_status` int(11) NOT NULL COMMENT '状态,0正常,1全局已完成',
  `log_created` datetime(6) NOT NULL COMMENT '创建时间',
  `log_modified` datetime(6) NOT NULL COMMENT '修改时间',
  UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'AT transaction mode undo table' ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

九、gateway配置

1.创建一个子模块gateway

在这里插入图片描述

2.导入依赖

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

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

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

在这里插入图片描述

2.编写配置文件

server:
  port: 8000
spring:
  application:
    name: service-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway: 
      routes: # 网关路由配置
        - id: system_route #指定服务id,随便取,但是不能重复
          uri: lb://manage-system # 路由的目标地址 http就是固定地址
          #uri: http://localhost:8010
          predicates:
            - Path=/gateway/**
          filters:
            - RewritePath=/gateway/(?<segment>.*),/system/$\{segment}


logging:
  level:
    org.springframework.cloud.gateway: DEBUG

在这里插入图片描述

3.编写主启动类

在这里插入图片描述

4.启动gateway服务,去nacos页面查看

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python解决Excel问题的最佳姿势

大家好&#xff0c;我是毕加锁。 今天给大家带来的是用Python解决Excel问题的最佳姿势 文末送书&#xff01; 文末送书&#xff01; 文末送书&#xff01; 「问题说明」 这次要处理的excel有两个sheet&#xff0c;要根据其中一个sheet的数据来计算另外一个sheet的值。造成问…

循环神经网络

循环神经网络(Recurrent Neural Network&#xff0c;RNN)与卷积神经网络一样,都是深度学习中的重要部分。循环神经网络可以看作一类具有短期记忆能力的神经网络。在循环神经网络中&#xff0c;神经元不但可以接收其他神经元的信息&#xff0c;也可以接收自身的信息&#xff0c;…

ChatGPT 速通手册——开始提问

开始提问 当我们完成注册后&#xff0c;页面自动会跳转到ChatGPT的主页面&#xff0c;在这里我们就可以开始进行对话了。 我们在页面下方的输入框中填写问题&#xff0c;然后回车或者点击小飞机&#xff0c;我们的问题和ChatGPT的答案就会在页面上方以一问一答的格式展现出来…

Packet Tracer 的安装过程

Packet Tracer 的安装过程 下载地址 链接&#xff1a;https://pan.baidu.com/s/1KO-vJ1p-miU7LXRH92hLww 提取码&#xff1a;ocwu 、双击运行 Crack 文件夹中的"Patch.exe"程序&#xff0c;点击 Patch&#xff1b; 7、即可看到显示激活成功&#xff0c;接下来打开…

Matplotlib学习挑战第四关-网格线grid

Matplotlib 网格线 我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。 grid() 方法语法格式如下&#xff1a; matplotlib.pyplot.grid(bNone, whichmajor, axisboth, )b&#xff1a;可选&#xff0c;默认为 None&#xff0c;可以设置布尔值&#xff0c;true 为显…

CentOS 软件包管理

一、文件打包与压缩 1.du命令 --查看目录或文件所占磁盘空间的大小 -h&#xff0c;以K,M,G为单位显示统计结果&#xff08;默认单位为字节&#xff09; -s&#xff0c;查看目录本身的大小 2.打包压缩 tar命令--打包&#xff0c;打包文件的扩展名为.tar…

如何在TypeScript中使用泛型

介绍 泛型是静态类型语言的基本特征&#xff0c;允许开发人员将类型作为参数传递给另一种类型、函数或其他结构。当开发人员使他们的组件成为通用组件时&#xff0c;他们使该组件能够接受和强制在使用组件时传入的类型&#xff0c;这提高了代码灵活性&#xff0c;使组件可重用…

【计算机网络——计算机网络的概念,组成,功能和分类以及相关的性能指标,分层结构和协议,TCP/IP参考模型】

文章目录计算机网络体系结构计算机网络的概念、组成、功能和分类标准化工作及相关组织速率相关的性能指标时延、时延带宽积、PTT和利用率分层结构、协议、接口和服务OSI参考模型TCP IP参考模型计算机网络体系结构 计算机网络的概念、组成、功能和分类 计算机网络的概念 计算…

EasyRecovery免费电脑硬盘数据恢复软件使用教程

EasyRecovery硬盘数据恢复软件采用最新的数据扫描引擎&#xff0c;从磁盘底层读出原始的扇区数据&#xff0c;经过高级的数据分析算法&#xff0c;把丢失的目录和文件在内存中重建出原分区和原来的目录结构&#xff0c;数据恢复的效果非常好。操作简单&#xff0c;向导式的界面…

如何使用katalon studio 完成 get/post 请求发送

前言 katalon studio作为目前最火的自动化测试工具之一&#xff0c;不仅仅只能完成webUI自动化&#xff0c;更是能完成api、app以及桌面应用程序的自动化测试。本文将讲解一下katalon studio是如果完成接口测试的。 请求发送 get请求 1、先在object repository里new一个请求…

代码随想录算法训练营第五十九天 | 503.下一个更大元素II、42. 接雨水

打卡第59天&#xff0c;继续单调栈。 今日任务 503.下一个更大元素II42.接雨水 503.下一个更大元素II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下…

C++ 类之间的纵向关系-继承

目录 继承的基本概念 定义 使用方法 内存空间 继承下构造析构执行的顺序 构造函数 继承的基本概念 定义 被继承的类叫做基类&#xff08;父类&#xff09;&#xff0c;继承的类叫派生类&#xff08;子类&#xff09;&#xff0c;在子类类名后面加:继承方式 父类 class …

JavaScript概述一

1.JavaScript介绍 1.1 前端三要素 HTML:超文本标记语言&#xff0c;是一种使用标签&#xff08;标记&#xff09;描述网页中的视图内容的语言;CSS&#xff1a;层叠样式表&#xff0c;主要用于美化web页面外观,决定了网页中的视图效果&#xff1b;JavaScript&#xff1a;用于网…

PHP快速入门07-Cookie与Session的说明与使用

文章目录前言一、关于Cookie和Session1.1 Cookie1.2 Session二、Cookie和Session的使用2.1 Cookie的使用例子2.2 Session的使用例子总结前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP快速入门与实战 Cookie和Session是一个Web开发几乎不可避免的东西&#xff0c;是网站开发…

Java入坑之Numbers Strings

目录 一、Lambda表达式 1.1简介 1.2使用场景 1.3Lambda表达式的使用条件 1.4Lambda表达式的语法 1.5Lambda表达式的精简 二、方法引用 2.1基本概念 2.2使用条件 2.3语法格式 2.4静态方法引用 2.5特定对象的实例方法 2.6构造函数的方法引用 三、包装类 3.1概念 3…

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示所有资源导航一、资源说明二、基本参数参数引脚说明三、驱动说明时序:对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCSI4432无线模块1.2、STM32F103C8T6SI4432无线模块五、基础知识学习与相关…

基于tensorflow和tensorflow-quantum的量子机器学习环境搭建, Mac环境下

量子神经网络&#xff08;Quantum neural networks, QNN&#xff09;及其变体量子卷积神经网络&#xff08;Quantum convolutional networks, QCNN&#xff09;&#xff0c;在内存和速度方面都有着高效的优势&#xff0c;能将经典向量由n维编码到log2^n个量子位&#xff0c;同时…

分子生物学 第四章 DNA的生物合成

文章目录第四章 DNA的生物合成第一节 DNA复制的一般特征1 DNA的半保留复制2 DNA的双向复制3 DNA的半不连续复制第二节 DNA复制的酶学1 DNA聚合酶1.1 原核生物DNA pol1.1.1 DNA pol I1.2 DNA pol II1.3 DNA pol III1.4 其它的DNA pol1.2 真核生物DNA聚合酶1.2.1 DNA pol α\alph…

深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

1.交叉熵损失函数 在物理学中&#xff0c;“熵”被用来表示热力学系统所呈现的无序程度。香农将这一概念引入信息论领域&#xff0c;提出了“信息熵”概念&#xff0c;通过对数函数来测量信息的不确定性。交叉熵&#xff08;cross entropy&#xff09;是信息论中的重要概念&am…

ITIL社群的内容及作用

官方网站 www.itilzj.com 文档资料: wenku.itilzj.com ITIL是全球范围内最为流行的IT服务管理框架之一&#xff0c;它能够帮助企业提高IT服务质量&#xff0c;提升业务价值。无论你是IT行业的从业者还是对ITIL感兴趣的人士&#xff0c;ITIL之家社群都将为你提供有价值的知识和经…