久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

微服務(wù)開發(fā)環(huán)境怎么配置

176次閱讀
沒有評論

共計(jì) 6607 個(gè)字符,預(yù)計(jì)需要花費(fèi) 17 分鐘才能閱讀完成。

本篇內(nèi)容介紹了“微服務(wù)開發(fā)環(huán)境怎么配置”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

微服務(wù)開發(fā)環(huán)境準(zhǔn)備 SpringCloud 版本

相關(guān)文檔

SpringCloud 官網(wǎng) https://spring.io/projects/spring-cloud/

歷史背景版本號命名規(guī)則

關(guān)于 SpringCloud 的分類,根據(jù) SpringCloud 版本的命名方式的改變可以分為兩個(gè)階段:

倫敦地鐵站名

在 Spring Cloud 2020.0.0 版本之前,SpringCloud 的所有版本均按照倫敦地鐵站站名從 A - Z 的排序進(jìn)行命名,如下:

為了便于稱呼,一般也都稱之為 A 版本,B 版本,F(xiàn) 版本和 H 版本。

SR9,每當(dāng) SpringCloud 解決了一個(gè)重大 bug 就會增加 SR 版本,SR9 就意味著在 H 版本的基礎(chǔ)上解決了九個(gè)重大 bug

日歷化版本

從 Spring Cloud 2020.0.0-M1 開始,Spring Cloud 廢除了這種英國倫敦地鐵站的命名方式,而使用了全新的 日歷化 版本命名方式。

什么是日歷化版本?

英文名稱:Calendar Versioning

日歷化版本不是基于任意的數(shù)字,而是基于項(xiàng)目的發(fā)布日期的版本控制約定,隨著時(shí)間的推移,版本會越來越好。

Spring Cloud 使用了 YYYY.MINOR.MICRO 的命名規(guī)則:

預(yù)發(fā)布版本的后綴分隔符也從 . 變更為 -,如:2020.0.0-M1 和 2020.0.0-RC2 命名所示。

使用日歷化版本命名方式,可以更清楚的看出當(dāng)前版本的年份,看到字母、純數(shù)字方式的版本號都不知道自己多久沒升級

YYYY:表示 4 位年份;

MINOR:代表一個(gè)遞增的數(shù)字,每年以 0 開始遞增;

MICRO:代表版本號后綴,就和之前使用的 .0 類似于 .RELEASE 一樣,.2 類似于 .SR2。

版本的變化給 SpringCloud 帶來了什么樣的改變呢?

SpringCloud 的改變目前來說主要體現(xiàn)在對 Netflix 套件的支持上,早期 SpringCloud 主要是封裝了 Netflix 套件實(shí)現(xiàn)服務(wù)注冊發(fā)現(xiàn),負(fù)載均衡,熔斷等功能,但是隨著版本的迭代,由于 Netflix 停止開源項(xiàng)目的更新,所以 SpringCloud 開始逐步減少對 Netflix 套件的支持。簡單可以分為以下三個(gè)時(shí)間階段:

早期,SpringCloud 完全封裝 Netflix 套件,核心功能均有 Netflix 組件提供

2018 年前后,Netflix 公司宣布其核心組件 Hystrix、Ribbon、Zuul 等均進(jìn)入維護(hù)狀態(tài)。同時(shí) Spring Cloud Netflix 項(xiàng)目進(jìn)入維護(hù)模式,并計(jì)劃在 2020 年廢除。

北京時(shí)間 2020 年 12 月 22 日深夜,Spring Cloud 2020.0.0 版本正式發(fā)布,Netflix 模塊的全部移除,并且給出替代組件

根據(jù)上述變化,簡單來說,H 版本和 2020 版本目前屬于一個(gè)分界線式的版本,從此開始,SpringCloud 棄用 Netflix 套件,進(jìn)入一個(gè)新的時(shí)代,但是對于企業(yè)開發(fā)而言,現(xiàn)在未必需要立馬更新最新版本。

一方面大量項(xiàng)目還是采用 Netflix 組件進(jìn)行開發(fā),目前來看并沒有替換的必要性。另一方面部分技術(shù)并不能完全兼容新版本,例如 SpringCloud Alibaba 就不能完全兼容新版本。

總結(jié)

本次教程以 H 版本為主進(jìn)行學(xué)習(xí),依然采用 Netflix 組件進(jìn)行微服務(wù)項(xiàng)目開發(fā),同時(shí)也會深入學(xué)習(xí) SpringCloud Alibaba 相關(guān)組件,并且根據(jù)我司項(xiàng)目實(shí)際情況,對認(rèn)證,分布式事務(wù),分布式鎖,分布式日志管理等業(yè)務(wù)場景進(jìn)行功能實(shí)現(xiàn)講解

在我看來,本教程作為承上啟下的作用,對于廣泛采用 Netflix 組件的企業(yè)來說,學(xué)習(xí)本教程可以快速上手進(jìn)行開發(fā),對于未來的技術(shù)趨勢也熟稔于心,可以在合適的時(shí)候進(jìn)行項(xiàng)目的技術(shù)迭代。

下個(gè)版本的教程,將會推出 SpringCloud 2020 版本,刪除 Netflix 組件的同時(shí),更加偏向云原生開發(fā)

該教程版本選擇

關(guān)于 SpringCloud 版本選擇主要考慮的問題就是 SpringCloud 和 SpringBoot 的兼容性問題,關(guān)于這一點(diǎn)建議嚴(yán)格按照官網(wǎng)文檔進(jìn)行,如下:

版本選擇:

SpringCloud Hoxton.SR9

SpringBoot 2.3.5.RELEASE

SpringCloud Alibaba 2.1.2.RELEASE

Java 版本 Java8

項(xiàng)目搭建父項(xiàng)目創(chuàng)建

創(chuàng)建父項(xiàng)目

確認(rèn) IDEA 設(shè)置

Maven 設(shè)置

文件過濾 可以不配置

不顯示 .idea 文件夾

父項(xiàng)目 pom 文件

?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 http://maven.apache.org/xsd/maven-4.0.0.xsd 
  modelVersion 4.0.0 /modelVersion 
  groupId com.baizhi /groupId 
  artifactId microservices-cloud /artifactId 
  version 1.0-SNAPSHOT /version 
  packaging pom /packaging 
  description 統(tǒng)一依賴版本 /description 
  properties 
  java.version 1.8 /java.version 
  project.build.sourceEncoding UTF-8 /project.build.sourceEncoding 
  maven.compiler.source 1.8 /maven.compiler.source 
  maven.compiler.target 1.8 /maven.compiler.target 
 !--  版本號 -- 
  spring.cloud-version Hoxton.SR9 /spring.cloud-version 
  spring.boot-version 2.3.5.RELEASE /spring.boot-version 
  spring.cloud.alibaba-version 2.1.2.RELEASE /spring.cloud.alibaba-version 
  /properties 
  dependencyManagement 
  dependencies 
  dependency 
  groupId org.springframework.boot /groupId 
  artifactId spring-boot-dependencies /artifactId 
  version ${spring.boot-version} /version 
  type pom /type 
  scope import /scope 
  /dependency 
  dependency 
  groupId org.springframework.cloud /groupId 
  artifactId spring-cloud-dependencies /artifactId 
  version ${spring.cloud-version} /version 
  type pom /type 
  scope import /scope 
  /dependency 
  dependency 
  groupId com.alibaba.cloud /groupId 
  artifactId spring-cloud-alibaba-dependencies /artifactId 
  version ${spring.cloud.alibaba-version} /version 
  type pom /type 
  scope import /scope 
  /dependency 
  /dependencies 
  /dependencyManagement 
  build 
  plugins 
  plugin 
  groupId org.springframework.boot /groupId 
  artifactId spring-boot-maven-plugin /artifactId 
  /plugin 
  /plugins 
  /build 
 /project

設(shè)置跳過單元測試

商品服務(wù)和訂單服務(wù)創(chuàng)建

通過 Spring Initializr 的方式創(chuàng)建項(xiàng)目

Spring Initializr SpringBoot 項(xiàng)目工程腳手架,可以直接創(chuàng)建出來 SpringBoot 項(xiàng)目,包含 application 配置文件和啟動類等。https://start.spring.io/

類似的腳手架還要 Alibaba 的 Java 工程構(gòu)建工具:https://start.aliyun.com/bootstrap.html

IDEA 整合 Alibaba Java 工程腳手架 https://start.aliyun.com/article/initializr/springbootideaplugin

商品服務(wù)創(chuàng)建

選擇通過 Spring Initializr 的方式創(chuàng)建項(xiàng)目

指定使用 Alibaba Java 工程腳手架的地址 https://start.aliyun.com/

選擇依賴創(chuàng)建項(xiàng)目

修改 pom 文件,繼承父項(xiàng)目

修改商品服務(wù)的 pom 文件,如下

?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 
  artifactId cloud-product /artifactId 
  version 0.0.1-SNAPSHOT /version 
  name cloud-product /name 
  description 商品服務(wù) /description 
  parent 
  groupId com.baizhi /groupId 
  artifactId cloud-demo /artifactId 
  version 1.0-SNAPSHOT /version 
  /parent 
  dependencies 
  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 
  exclusions 
  exclusion 
  groupId org.junit.vintage /groupId 
  artifactId junit-vintage-engine /artifactId 
  /exclusion 
  /exclusions 
  /dependency 
  /dependencies 

/project

修改父項(xiàng)目 pom 文件

微服務(wù)開發(fā)環(huán)境怎么配置

在商品服務(wù)中創(chuàng)建測試 Controller 接口

微服務(wù)開發(fā)環(huán)境怎么配置

編寫 application 配置文件啟動項(xiàng)目

微服務(wù)開發(fā)環(huán)境怎么配置

微服務(wù)開發(fā)環(huán)境怎么配置

訂單服務(wù)創(chuàng)建

微服務(wù)開發(fā)環(huán)境怎么配置

效果如下:

微服務(wù)開發(fā)環(huán)境怎么配置

選擇通過 Spring Initializr 的方式創(chuàng)建項(xiàng)目

指定使用 Alibaba Java 工程腳手架的地址

選擇依賴創(chuàng)建項(xiàng)目

修改 pom 文件,繼承父項(xiàng)目

在訂單服務(wù)中創(chuàng)建測試 Controller 接口

微服務(wù)開發(fā)環(huán)境怎么配置

編寫 application 配置文件啟動項(xiàng)目

微服務(wù)開發(fā)環(huán)境怎么配置

RestTemplate 訂單服務(wù)如何獲取商品服務(wù)數(shù)據(jù)

服務(wù)調(diào)用:訂單服務(wù)發(fā)請求,請求商品服務(wù),獲取響應(yīng)數(shù)據(jù)

Java 代碼怎么發(fā) http 請求?

HTTPClient Apache

RestTemplate Spring

參考資料:https://mp.weixin.qq.com/s/3MfNWtTfckGr2hG9Ly9OPg

RestTemplate 簡介和基本使用

Spring 中封裝的通過 Java 代碼發(fā)送 RestFul 請求 (HTTP) 的模板類,內(nèi)置發(fā)送 get post delete 等請求的方法,在 SpringBoot 中只要導(dǎo)入 spring-boot-starter-web 的依賴可以直接使用。

導(dǎo)入依賴 spring-boot-starter-web

dependency 
 groupId org.springframework.boot /groupId 
 artifactId spring-boot-starter-web /artifactId 
 /dependency

配置 RestTemplate

微服務(wù)開發(fā)環(huán)境怎么配置

在測試類中使用 RestTemplate 的 APi 發(fā)送請求

package com.baizhi.cloudorder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class CloudOrderApplicationTests {
 @Autowired
 private RestTemplate restTemplate;
 private String url =  http://localhost:8081/product/getProductById?id=1 
 /**
 *  發(fā)送請求   請求商品服務(wù)
 *
 *  商品服務(wù)接口地址:http://localhost:8081/product/getProductById
 */
 @Test
 void contextLoads() {
 /**
 * getForObject getForEntity
 *  參數(shù) 1  url
 *  參數(shù) 2   響應(yīng)數(shù)據(jù)的類型的類對象
 *  參數(shù) 3  url 參數(shù)【可以不要   參數(shù)可以直接? 拼接】 *
 * getForObject  返回值是被調(diào)用接口的響應(yīng)數(shù)據(jù)
 * getForEntity  返回值是響應(yīng)體對象,包含更多的數(shù)據(jù):接口響應(yīng)數(shù)據(jù),響應(yīng)狀態(tài)碼等
 */
 String result = restTemplate.getForObject(url, String.class);
 System.out.println(result);
 ResponseEntity String  entity = restTemplate.getForEntity(url, String.class);
 System.out.println(entity.getStatusCode());
 System.out.println(entity.getBody());
 }

 String result = restTemplate.getForObject(  http://localhost:8081/product/getProductById?id={id} ,  String.class,  map  );  System.out.println(result);
}

最后商品服務(wù)通過 RestTemplate 調(diào)用訂單服務(wù)

“微服務(wù)開發(fā)環(huán)境怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計(jì)6607字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 扎囊县| 淅川县| 同仁县| 桑植县| 锡林浩特市| 枣强县| 深州市| 阿合奇县| 逊克县| 金华市| 洛隆县| 大冶市| 共和县| 洮南市| 鄯善县| 尼玛县| 澎湖县| 丰城市| 双桥区| 太白县| 仪征市| 合水县| 定州市| 伊春市| 蕲春县| 红原县| 岐山县| 壶关县| 怀仁县| 保山市| 讷河市| 浮山县| 鄂托克旗| 嘉鱼县| 五常市| 横山县| 衡阳县| 景泰县| 普定县| 江都市| 岗巴县|