將Springboot項(xiàng)目升級成Springcloud項(xiàng)目的圖文教程
本文以nacos為例
分為以下幾個(gè)步驟
- 1. 下載nacos軟件
- 2. pom文件配置
- 3. application.yml文件配置
- 4. 代碼調(diào)用
- 5. 效果展示
一 . 下載nacos軟件
1.1 下載nacos-server-2.2.0-BETA這個(gè)版本
1.2 修改nacos配置文件
打開bin目錄下的startup.cmd,將第26行的
set MODE=“cluster” 改為: set MODE=“standalone”
1.3 雙擊startup.cmd
如下圖則表示啟動成功
二. 項(xiàng)目中引入jar,配置文件pom.xml
Springboot升級為Springcloud版本一定要對應(yīng),不然就會有很多稀奇古怪的錯(cuò)誤
本文是將2.7.5的Springboot升級為2021.0.7的Springcloud如圖:
以下是幾個(gè)關(guān)鍵的配置:
完整的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時(shí),有些jar會有沖突,本文pom.xml文件中注釋掉的就是沖突的jar,但是讀者得根據(jù)自己的實(shí)際情況進(jìn)行增刪沖突jar,不過一般就是文中的這幾個(gè)
三. application.yml文件配置
server: port: 9080 spring: application: name: consumer cloud: nacos: discovery: server-addr: 127.0.0.1:8848
注意事項(xiàng):
四. 代碼調(diào)用:
項(xiàng)目說明,項(xiàng)目有一個(gè)消費(fèi)者(調(diào)用方),和兩個(gè)生產(chǎn)者(被調(diào)用方)
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)者調(diào)用代碼:
本代碼中設(shè)置了三種情況:消費(fèi)者調(diào)用時(shí)傳輸一個(gè)參數(shù),兩個(gè)參數(shù),一個(gè)集合的三種情況:
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; //傳輸一個(gè)參數(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; } //傳輸多個(gè)參數(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 消費(fèi)者
消費(fèi)者代碼解析:
消費(fèi)者代碼:
消費(fèi)者application.yml
server: port: 9080 spring: application: name: consumer cloud: nacos: discovery: server-addr: 127.0.0.1:8848
消費(fèi)者接口:
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); }
消費(fèi)者實(shí)現(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; //傳輸一個(gè)參數(shù) @GetMapping("/canos") @ResponseBody public String hiFeign(){ System.out.println("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"); return providerClient.hi("你好,我這邊發(fā)出了信息。。。。。"); } //傳輸多個(gè)參數(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:
用戶名和密碼默認(rèn)是:nacos
啟動一個(gè)消費(fèi)者CStudents_C、兩個(gè)生產(chǎn)者CStudents_P1、CStudents_P2
觀察naocs控制面板:
可以對服務(wù)進(jìn)行上線下線或者分配權(quán)重:
調(diào)用效果展示:
到此這篇關(guān)于將Springboot項(xiàng)目升級成Springcloud項(xiàng)目的圖文教程的文章就介紹到這了,更多相關(guān)Springboot升級成Springcloud內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法
- 解決springboot與springcloud版本兼容問題(附版本兼容表)
- SpringCloud解決Feign異步回調(diào)問題(SpringBoot+Async+Future實(shí)現(xiàn))
- SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊中心的方法
- SpringBoot(cloud)自動裝配bean找不到類型的問題
- springboot集成springCloud中g(shù)ateway時(shí)啟動報(bào)錯(cuò)的解決
- 解決nacos升級spring cloud 2020.0無法使用bootstrap.yml的問題
- 從零開始搭建springboot+springcloud+mybatis本地項(xiàng)目全過程(圖解)
- 詳解SpringBoot與SpringCloud的版本對應(yīng)詳細(xì)版
- Spring、Spring?Boot、Spring?Cloud?的區(qū)別與聯(lián)系分析
相關(guān)文章
Maven介紹與配置+IDEA集成Maven+使用Maven命令小結(jié)
Maven是Apache軟件基金會的一個(gè)開源項(xiàng)目,是一個(gè)優(yōu)秀的項(xiàng)目構(gòu)建管理工具,它用來幫助開發(fā)者管理項(xiàng)目中的 jar,以及 jar 之間的依賴關(guān)系、完成項(xiàng)目的編譯、測試、打包和發(fā)布等工作,本文給大家介紹Maven介紹與配置+IDEA集成Maven+使用Maven命令,感興趣的朋友一起看看吧2024-01-01springboot整合nacos的入門Demo及Nacos安裝部署
Nacos?提供了一組簡單易用的特性集,幫助您快速實(shí)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理,Nacos?致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù),這篇文章主要介紹了springboot整合nacos的入門Demo,需要的朋友可以參考下2024-01-01MyBatis異常-Property ''configLocation'' not specified, using d
今天小編就為大家分享一篇關(guān)于MyBatis異常-Property 'configLocation' not specified, using default MyBatis Configuration,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03Mybatis-plus通過添加攔截器實(shí)現(xiàn)簡單數(shù)據(jù)權(quán)限
系統(tǒng)需要根據(jù)用戶所屬的公司,來做一下數(shù)據(jù)權(quán)限控制,具體一點(diǎn),就是通過表中的company_id進(jìn)行權(quán)限控制,項(xiàng)目使用的是mybatis-plus,所以通過添加攔截器的方式,修改查詢sql,實(shí)現(xiàn)數(shù)據(jù)權(quán)限,本文就通過代碼給大家詳細(xì)的講解一下,需要的朋友可以參考下2023-08-08Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(29)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07JAVA如何獲取jvm和操作系統(tǒng)相關(guān)信息
這篇文章主要介紹了JAVA獲取jvm和操作系統(tǒng)相關(guān)信息,使用Java自帶的類進(jìn)行獲取系統(tǒng)運(yùn)行的相關(guān)信息,在這整理記錄分享一下,需要的朋友可以參考下2022-10-10SpringBoot使用Redisson實(shí)現(xiàn)分布式鎖(秒殺系統(tǒng))
這篇文章主要為大家詳細(xì)介紹了SpringBoot使用Redisson實(shí)現(xiàn)分布式鎖,秒殺系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12