如何将Springboot项目升级成Springcloud项目

news2025/1/15 23:49:09

本文以nacos为例

分为以下几个步骤
1. 下载nacos软件
2. pom文件配置
3. application.yml文件配置
4. 代码调用
5. 效果展示

一 . 下载nacos软件

1.1 下载nacos-server-2.2.0-BETA这个版本

1.2 修改nacos配置文件
打开bin目录下的startup.cmd,将第26行的
set MODE=“cluster”
改为:
set MODE=“standalone”

在这里插入图片描述
1.3 双击startup.cmd
如下图则表示启动成功

在这里插入图片描述

二. 项目中引入jar,配置文件pom.xml

Springboot升级为Springcloud版本一定要对应,不然就会有很多稀奇古怪的错误

本文是将2.7.5的Springboot升级为2021.0.7的Springcloud
如图:
在这里插入图片描述

以下是几个关键的配置:
在这里插入图片描述

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

完整的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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>cstudents</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>students</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <!--<spring-cloud-alibaba-version>2.2.5.RELEASE</spring-cloud-alibaba-version>-->
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
           <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>2021.0.5.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>


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

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

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>jsr305</artifactId>
                    <groupId>com.google.code.findbugs</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>HdrHistogram</artifactId>
                    <groupId>org.hdrhistogram</groupId>
                </exclusion>
            </exclusions>
        </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>

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

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--加载JPA-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!--Mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.1</version>
        </dependency>

        <!--阿里云-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.15</version>
        </dependency>

        <!--连接mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>

        <!--分页的插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.5</version>
        </dependency>

        <!-- 逆向工程依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--Mybatis-->
        <!--<dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.1</version>
        </dependency>-->

        <!--devtools热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
       <!-- <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>-->

    </dependencies>

    <!--<pluginRepositories>
        <pluginRepository>
            <id>alimaven spring plugin</id>
            <name>alimaven spring plugin</name>
            <url>https://maven.aliyun.com/repository/spring-plugin</url>
        </pluginRepository>
    </pluginRepositories>-->



    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
        <repository>
            <id>repository.springframework.maven.release</id>
            <name>Spring Framework Maven Release Repository</name>
            <url>http://maven.springframework.org/milestone/</url>
        </repository>
        <repository>
            <id>org.springframework</id>
            <url> http://maven.springframework.org/snapshot</url>
        </repository>
        <repository>
            <id>spring-milestone</id>
            <name>Spring Maven MILESTONE Repository</name>
            <url>http://repo.spring.io/libs-milestone</url>
        </repository>
        <repository>
            <id>spring-release</id>
            <name>Spring Maven RELEASE Repository</name>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>




    <build>
        <plugins>
            <!--<plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.1</version>
            </plugin>-->

            <!-- 逆向工程插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <configurationFile>GeneratorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

在升级为Springcloud时,有些jar会有冲突,本文pom.xml文件中注释掉的就是冲突的jar,但是读者得根据自己的实际情况进行增删冲突jar,不过一般就是文中的这几个

三. application.yml文件配置

server:
  port: 9080

spring:
  application:
    name: consumer

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

注意事项:
在这里插入图片描述

4. 代码调用:

项目说明,项目有一个消费者(调用方),和两个生产者(被调用方)

4.1 生产者

生产者代码解析:

在这里插入图片描述

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

在这里插入图片描述

代码:

生产者application.yml:

server:
  port: 8081

spring:
  application:
    name: provider

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

生产者调用代码:

本代码中设置了三种情况:
消费者调用时传输一个参数,两个参数,一个集合的三种情况:

package com.example.test;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Map;

@Controller
@RefreshScope
public class PrivodeController {


    @Value("${server.port}")
    String port;

    //传输一个参数
    @GetMapping("/hi")
    @ResponseBody
    public String hi(@RequestParam(value = "name", defaultValue = "forezp",required = false) String name) {
        System.out.println("666");
        String msg = "I receive msg 【" + name + "】" + ", i'm provider ,my port:" + port;
        System.out.println(msg);
        return msg;
    }

    //传输多个参数
    @GetMapping("/send")
    @ResponseBody
    public String send1(@RequestParam(value = "city", defaultValue = "Shanghai",required = false) String city,
                       @RequestParam(value = "site", defaultValue = "School",required = false) String site) {
        System.out.println("666");
        String msg = "My favorite city is " + city+ " , I want to go to " + site;
        System.out.println(msg);
        return msg;
    }

    //传输Map
    @GetMapping("/send2")
    @ResponseBody
    public String send2(@RequestParam Map data) {
        System.out.println("666");
        String msg = "My name is " + data.get("name")+ " , I am " + data.get("age") + " years old.";
        System.out.println(msg);
        return msg;
    }
}

生产者启动类:

package com.example;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RestController;

@MapperScan("com.example.mapper")
@SpringBootApplication
@RestController
@EnableDiscoveryClient
public class StudentsApplication {

    public static void main(String[] args) {
        SpringApplication.run(StudentsApplication.class, args);
    }

}

4.2 消费者

消费者代码解析:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

消费者代码:

消费者application.yml

server:
  port: 9080

spring:
  application:
    name: consumer

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

消费者接口:

package com.example.test;

import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

@FeignClient(value = "provider" )
@RefreshScope
public interface ProviderClient {

    @GetMapping("/hi")
    String hi(@RequestParam(value = "name", defaultValue = "hello", required = false) String name);

    @GetMapping("/send1")
    String send1(@RequestParam(value = "city", defaultValue = "Shanghai", required = false) String city,
                @RequestParam(value = "site", defaultValue = "School", required = false) String site);

    @GetMapping("/send2")
    String send2(@RequestParam  Map data);
}

消费者实现类:

package com.example.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
public class ConsumerController {

    @Autowired
    ProviderClient providerClient;

    //传输一个参数
    @GetMapping("/canos")
    @ResponseBody
    public String hiFeign(){
        System.out.println("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");
        return providerClient.hi("你好,我这边发出了信息。。。。。");
    }

    //传输多个参数
    @GetMapping("/test")
    @ResponseBody
    public String hiNacos(){
        System.out.println("666");
        return providerClient.send1("Beijing","Tiananmen");
    }

    //传输Map
    @GetMapping("/test2")
    @ResponseBody
    public String hiNacos2(){
        System.out.println("777");
        Map<String,String> data = new HashMap<String,String>();
        data.put("name","Jack");
        data.put("age","18");
        return providerClient.send2(data);
    }
}

5. 效果展示:

双击启动nacos:

在这里插入图片描述

登录nocas:
用户名和密码默认是:nacos
在这里插入图片描述

启动一个消费者CStudents_C、两个生产者CStudents_P1、CStudents_P2

在这里插入图片描述

观察naocs控制面板:

在这里插入图片描述
可以对服务进行上线下线或者分配权重:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调用效果展示:

在这里插入图片描述

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

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

相关文章

【计算机网络】第二章 物理层(下)

文章目录 2.5 信道的极限容量2.5.1 奈氏准则2.5.2 香农公式2.5.3 练习题 2.6 章节小结2.7 章节习题 2.5 信道的极限容量 2.5.1 奈氏准则 理想低通信道的最高码元传输速率 2W Baud 2W 码元 / 秒 理想带通信道的最高码元传输速率 W Baud W 码元 / 秒 W : 信道带宽&#xff08…

OZON、雅虎自养号测评如何塑造伪装度极高的测评环境

在测评领域&#xff0c;每个卖家和工作室都深知&#xff1a;创建安全可靠的网络环境对于未来发展是至关重要的。如何打造一个伪装度极高的评测环境&#xff0c;这一问题始终困扰着许多人。 从早期的虚拟机、模拟机、云手机、VPS等系统方案成本高且成号率低。因此&#xff0c;一…

php对接微信公众号扫码登录开发实录(H5微信扫描登录、服务出现故障调试、模版消息设置、扫码轮询交互)

微信公众号扫码登录开发实录 前言一、服务器配置1.微信公众号配置2.本地服务器验证程序 二、生成登录二维码1.生成微信登录二维码2.封装成便于刷新的函数 三、扫码验证和交互四、模版消息设置五、开发中遇见的问题1.该公众号提供的服务出现故障&#xff0c;请稍后再试&#xff…

区分 scanf和printf、fscanf和fprintf、sscanf和sprintf函数

文章目录 前言scanf和printffscanf和fprintfsscanf和sprintf总结 前言 C语言中&#xff0c;许多函数的函数名过于相似&#xff0c;使用者要是不能很好地区分这些函数&#xff0c;就会造成误用&#xff0c;最终导致代码的结果大相径庭。对于scanf和printf函数、fscanf和fprintf…

Xcode 15 beta 2 (15A5161b) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布)

Xcode 15 beta 2 (15A5161b) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布) IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 此版本已加入 visonOS 支持。 请访问原文链接&#xff1a;https://sysin.org/blog/apple-xcode-15/&#xff0c;查看最新版。原创作品&#…

UWB测距方案|3C门店展示防丢报警方案,优化防盗设计提升购机体验

目前市场上最常见的3C产品&#xff08;如手机&#xff0c;平板电脑&#xff0c;电脑等&#xff09;展示防盗是采用有线防盗技术&#xff0c;即底座&#xff0c;防盗线以及警报触头组成。以线下手机营业厅为例&#xff0c;防盗线的长度直接限制了体验者的活动范围&#xff0c;没…

【VC 7/8】vCenter Server 更新(小版本升级)Ⅲ—— VC更新命令行工具 software-packages 更新命令说明

目录 3. software-packages 更新命令说明&#xff08;1&#xff09;查看 VCSA 中所有已安装的修补程序列表ⅰ 查看 VCSA 中已安装的修补程序和软件包的完整列表ⅱ 要按时间顺序查看已应用到 VCSA的所有修补程序ⅲ 要查看特定修补程序的详细信息 &#xff08;2&#xff09;将修补…

Centos7系统安装Docker

目录 1.Docker安装 1.安装Docker 2.启动Docker 2.Docker相关服务及配置镜像加速器 1.Docker安装 1.安装Docker 输入命令curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun进行安装 安装结束后&#xff0c;输入docker -v查看安装的docker版本 2.启动D…

【文献分享】基于边界点优化和多步路径规划的机器人自主探索

论文题目&#xff1a;Autonomous Robotic Exploration Based on Frontier Point Optimization and Multistep Path Planning 中文题目&#xff1a;基于边界点优化和多步路径规划的机器人自主探索 作者&#xff1a;Baofu Fang &#xff1b;Jianfeng Ding ; Zaijun Wang 作者机…

Elasticsearch:redact processor - 编辑处理器

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题&#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 Redact 处理器使用 Grok 规则引擎来模糊输入文档中与给定 Grok 模式匹配的文本。…

VMware虚拟机在Mac上安装

文章目录 下载链接2 下载CentOS操作系统 下载链接 点击下载官网VMware有30天免费试用&#xff0c;我们点击试用&#xff0c;如果后期需要再购买就可以了 也可以选择player版&#xff0c;免费注册然后下载&#xff0c;不用钱 注册好后会给你生成一个许可证密钥 2 下载CentOS操…

VSCode gdb 调试 qemu u-boot 的方法

前言 最近使用 VS Code GDB 调试 qemu&#xff0c;有了一点收获&#xff0c;u-boot 编译后生成了一个 elf 文件&#xff1a;u-boot&#xff0c;是否也可以调试一下&#xff1f; 为何需要 VS Code GDB 调试&#xff0c;直接 gdb 调试不就可以了吗&#xff1f;答案就是&#xff…

区块链技术的应用与前景展望

第一章&#xff1a;引言 在当今数字化时代&#xff0c;区块链技术作为一项前沿技术正迅速崭露头角&#xff0c;并在各个行业展现出巨大的潜力。区块链技术不仅仅是比特币和其他数字货币的基石&#xff0c;更是一种分布式、去中心化的记账和验证技术。本文将探讨区块链技术的应…

Matlab评价模型-TOPSIS法(优劣解距离法)

评价模型-TOPSIS法(优劣解距离法) 1.1 概念 TOPSIS 法是一种常用的组内综合评价方法&#xff0c;能充分利用原始数据的信息&#xff0c;其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵&#xff0c;采用余弦法找出有限方案中的最优方案和最劣…

C++14部分新特性

文章目录 1、lambda表达式2、constexpr关键字3、函数返回类型推导4、变量模版5、二进制字面值6、数字分位符7、通过类型寻址多元组8、make_unique 1、lambda表达式 C14提供了在lambda式的形参声明中使用auto的能力 泛型 lambda&#xff1a;C14 中的 lambda 表达式可以使用模板…

可维护的代码,高复用性之路:函数式编程带你飞

文章目录 I. 前言介绍函数式编程引言&#xff1a;为什么需要函数式编程 II. 函数式编程基础声明式编程和命令式编程比较纯函数&#xff1a;概念&#xff0c;优点和局限性不可变数据&#xff1a;概念&#xff0c;优点和局限性 III. 函数式编程优点易于理解和调试代码可以提高代码…

Matlab数学建模-典型相关分析

统计分析-典型相关分析 概念 典型相关分析是研究两个多变量&#xff08;向量&#xff09;之间之间的线性相关关系&#xff0c;能够揭示出两组变量之间的内在联系。 CCA(典型相关分析) 在一元统计分析中&#xff0c;用相关系数来衡量两个随机变量的线性相关关系&#xff0c;…

C++ 第三弹继承和多态-类和对象

目录 1.继承 1.1什么是继承&#xff1f; 1.2语法格式 1.3继承权限 1.4继承概念语法格式 1.5赋值兼容规则 1.6继承体系中的作用域 1.7在继承体系中的构造和析构 1.8静态成员继承 1.9友元的继承 1.10不同继承方式下子类的对象模型 1.11继承和组合 2.多态 2.1什么是…

分销架构总结

概述 对于过往分销系统的经验总结。视角上会不区分实物及虚拟服务的分销。 分销定义&#xff1a;将产品从生产者转移到消费者。 分销职责&#xff1a;获客&#xff0c;服务(售前&#xff0c;售中&#xff0c;售后)。核心是通过不同分销渠道将产品能卖出去。 在整体分销网络…

jjy-share-v1.0 一键分享到微博、QQ空间、QQ好友、微信,一键分享,一键分享代码,一键分享插件,一键分享代码插件

项目地址&#xff1a; jjy-share-v1.0: 一键分享到微博、QQ空间、QQ好友、微信作者&#xff1a; 极纪元-橙作者博客&#xff1a;https://cplvfx.blog.csdn.net/码云Gitee&#xff1a;https://gitee.com/cplvfx/时间&#xff1a;2023年6月21日 介绍 一键分享到微博、QQ空间、…