如何将Springboot项目升级成Springcloud项目(有图详解)

这篇具有很好参考价值的文章主要介绍了如何将Springboot项目升级成Springcloud项目(有图详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文以nacos为例

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

一 . 下载nacos软件

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

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

springboot项目改成springcloud,spring cloud,spring boot,spring
1.3 双击startup.cmd
如下图则表示启动成功

springboot项目改成springcloud,spring cloud,spring boot,spring

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

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

本文是将2.7.5的Springboot升级为2021.0.7的Springcloud
如图:
springboot项目改成springcloud,spring cloud,spring boot,spring

以下是几个关键的配置:
springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring
springboot项目改成springcloud,spring cloud,spring boot,spring

完整的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

注意事项:
springboot项目改成springcloud,spring cloud,spring boot,spring

4. 代码调用:

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

4.1 生产者

生产者代码解析:

springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring
springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring

代码:

生产者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 消费者

消费者代码解析:

springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring

消费者代码:

消费者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:

springboot项目改成springcloud,spring cloud,spring boot,spring

登录nocas:
用户名和密码默认是:nacos
springboot项目改成springcloud,spring cloud,spring boot,spring

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

springboot项目改成springcloud,spring cloud,spring boot,spring

观察naocs控制面板:

springboot项目改成springcloud,spring cloud,spring boot,spring
可以对服务进行上线下线或者分配权重:

springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring

springboot项目改成springcloud,spring cloud,spring boot,spring

调用效果展示:

springboot项目改成springcloud,spring cloud,spring boot,spring文章来源地址https://www.toymoban.com/news/detail-633042.html

到了这里,关于如何将Springboot项目升级成Springcloud项目(有图详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

    如何高效学习Java? 毕业设计项目应该怎么做?入门实战项目应该怎么做? 做Java开发都应该学习哪些框架技术?到底应该往哪个方向努力? 📢 这是专栏的第一篇文章,我想来跟你聊聊 为什么要学习此专栏 ?我们经常说,看一个事儿千万不要直接陷入细节里,你应该 先鸟瞰

    2024年02月03日
    浏览(48)
  • Nacos使用(下):SpringBoot和SpringCloud项目中使用Nacos

    Nacos使用(上):Nacos安装 Nacos使用(中):Java项目和Spring项目使用Nacos Nacos使用(下):SpringBoot和SpringCloud项目中使用Nacos 父工程指定springboot版本: 导入jar包 配置文件application.properties 启动类 Nacos上创建一个配置文件 属性可以直接通过@NacosValue读取,也可以映射到一个配置类中 配置

    2024年02月10日
    浏览(42)
  • 黑马头条 SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目

    各位爷,完整项目gitee如下,求star heima-leadnews-master: 《黑马头条》项目采用的是SpringBoot+springcloud当下最流行的微服务为项目架构,配合spring cloud alibaba nacos作为项目的注册和配置中心。新课程采用快速开发的模式,主要解决真实企业开发的一些应用场景。详情请看博客:htt

    2024年02月08日
    浏览(60)
  • 《黑马头条》SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目

    各位爷,完整项目gitee如下,求star heima-leadnews-master: 《黑马头条》项目采用的是SpringBoot+springcloud当下最流行的微服务为项目架构,配合spring cloud alibaba nacos作为项目的注册和配置中心。新课程采用快速开发的模式,主要解决真实企业开发的一些应用场景。详情请看博客:htt

    2024年02月15日
    浏览(50)
  • Springboot项目升级2.2.x升至2.7.x

    spring-boot-starter-parent 升级为2.7.1 兼容老的配置文件格式,spring提供了专门的依赖进行兼容,但是建议还是在升级能成功运行之后进行配置的同步修改 如果使用了bootstrap.yml文件,升级之后默认是不会使用bootstrap.yml了,所以可能会导致启动之后配置没有生效,需要引入依赖 2.

    2024年02月03日
    浏览(25)
  • SpringBoot2.7升级项目到Springboot3.1踩坑指南(jdk17/jdk21)

    由于SpringBoot3.x全面拥抱JDK17,兼容jdk21,jdk17乃是大势所趋。这里是从SpringBoot2.7--SpringBoot3.1踩坑指南。 提前阅读:jdk8升级JDK17避坑指南(适用于SpringBoot2.3—SpringBoot2.7升级) 国内顶级开源项目升级到springBoot3情况,可以作为升级SpringBoot3的风向标。仅对比国内规模使用,落地过

    2024年03月09日
    浏览(68)
  • springboot 项目日志配置文件详解

    在Spring Boot项目中,可以通过在 application.properties 或 application.yml 文件中指定日志配置文件来配置日志。 1. 使用 application.properties 文件: 在 application.properties 中,您可以使用以下属性来指定日志配置文件: 上述配置将告诉Spring Boot使用位于类路径下的 custom-logback.xml 文件作为

    2024年02月12日
    浏览(51)
  • Centos部署Springboot项目详解

    准备启动jar包,app.jar放入指定目录。  加入配置参数命令  随着配置参数越来越多,可创建启动脚本一键启动。  拷贝一下内容 脚本授权 拷贝一下内容 方式一 1、启动脚本拷贝至/etc/rc.d/init.d目录 注:需要把启动脚本中的路径都修改成绝对路径 2.给脚本app-server-auto.sh和jar包

    2024年02月15日
    浏览(35)
  • Springboot项目打包war配置详解

    2024年02月15日
    浏览(61)
  • SpringBoot项目----图书管理系统(详解)

    目录 项目业务  技术栈 数据库表的设计  数据库表关系图 关于字典表  前后端接口实现 1.初始化数据库、表、数据 2.数据库连接池配置 3.统一响应封装  4.统一异常处理 5.实现统一会话管理(登录)  5.通过Mybatis生成工具,生成mapper接口,xml文件,实体类  6.准备所有的Co

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包