將Springboot項目升級成Springcloud項目的圖文教程
本文以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,但是讀者得根據(jù)自己的實際情況進行增刪沖突jar,不過一般就是文中的這幾個
三. application.yml文件配置
server:
port: 9080
spring:
application:
name: consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848注意事項:

四. 代碼調用:
項目說明,項目有一個消費者(調用方),和兩個生產(chǎn)者(被調用方)
4.1 生產(chǎn)者
生產(chǎn)者代碼解析:




代碼:
生產(chǎn)者application.yml:
server:
port: 8081
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848生產(chǎn)者調用代碼:
本代碼中設置了三種情況:消費者調用時傳輸一個參數(shù),兩個參數(shù),一個集合的三種情況:
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;
//傳輸一個參數(shù)
@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;
}
//傳輸多個參數(shù)
@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;
}
}生產(chǎn)者啟動類:
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);
}消費者實現(xiàn)類:
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;
//傳輸一個參數(shù)
@GetMapping("/canos")
@ResponseBody
public String hiFeign(){
System.out.println("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");
return providerClient.hi("你好,我這邊發(fā)出了信息。。。。。");
}
//傳輸多個參數(shù)
@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);
}
}五. 效果展示:
雙擊啟動nacos:

登錄nocas:
用戶名和密碼默認是:nacos

啟動一個消費者CStudents_C、兩個生產(chǎn)者CStudents_P1、CStudents_P2

觀察naocs控制面板:

可以對服務進行上線下線或者分配權重:



調用效果展示:

到此這篇關于將Springboot項目升級成Springcloud項目的圖文教程的文章就介紹到這了,更多相關Springboot升級成Springcloud內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實現(xiàn)方法
- 解決springboot與springcloud版本兼容問題(附版本兼容表)
- SpringCloud解決Feign異步回調問題(SpringBoot+Async+Future實現(xiàn))
- SpringBoot項目改為SpringCloud項目使用nacos作為注冊中心的方法
- SpringBoot(cloud)自動裝配bean找不到類型的問題
- springboot集成springCloud中gateway時啟動報錯的解決
- 解決nacos升級spring cloud 2020.0無法使用bootstrap.yml的問題
- 從零開始搭建springboot+springcloud+mybatis本地項目全過程(圖解)
- 詳解SpringBoot與SpringCloud的版本對應詳細版
- Spring、Spring?Boot、Spring?Cloud?的區(qū)別與聯(lián)系分析
相關文章
Maven介紹與配置+IDEA集成Maven+使用Maven命令小結
Maven是Apache軟件基金會的一個開源項目,是一個優(yōu)秀的項目構建管理工具,它用來幫助開發(fā)者管理項目中的 jar,以及 jar 之間的依賴關系、完成項目的編譯、測試、打包和發(fā)布等工作,本文給大家介紹Maven介紹與配置+IDEA集成Maven+使用Maven命令,感興趣的朋友一起看看吧2024-01-01
springboot整合nacos的入門Demo及Nacos安裝部署
Nacos?提供了一組簡單易用的特性集,幫助您快速實現(xiàn)動態(tài)服務發(fā)現(xiàn)、服務配置、服務元數(shù)據(jù)及流量管理,Nacos?致力于幫助您發(fā)現(xiàn)、配置和管理微服務,這篇文章主要介紹了springboot整合nacos的入門Demo,需要的朋友可以參考下2024-01-01
MyBatis異常-Property ''configLocation'' not specified, using d
今天小編就為大家分享一篇關于MyBatis異常-Property 'configLocation' not specified, using default MyBatis Configuration,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Mybatis-plus通過添加攔截器實現(xiàn)簡單數(shù)據(jù)權限
系統(tǒng)需要根據(jù)用戶所屬的公司,來做一下數(shù)據(jù)權限控制,具體一點,就是通過表中的company_id進行權限控制,項目使用的是mybatis-plus,所以通過添加攔截器的方式,修改查詢sql,實現(xiàn)數(shù)據(jù)權限,本文就通過代碼給大家詳細的講解一下,需要的朋友可以參考下2023-08-08
SpringBoot使用Redisson實現(xiàn)分布式鎖(秒殺系統(tǒng))
這篇文章主要為大家詳細介紹了SpringBoot使用Redisson實現(xiàn)分布式鎖,秒殺系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12

