??各位小伙伴們大家好,歡迎來到這個小扎扎的spring cloud專欄,在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結,鑒于 看到就是學到、學到就是賺到 精神,這波依然是血賺 ┗|`O′|┛
💡spring cloud知識點速覽
- 🌕 版本選擇
- 🌕 技術選型
- 🌕 spring boot單體模塊的搭建
- 🌓 創建父工程
- 🌓 父工程的pom文件
- 🌓 創建子模塊
- 🌕 RestTemplate
- 🌓 使用步驟
- 🌕 系統重構(子模塊間重復代碼的抽取)
🌕 版本選擇
??學習spring cloud之前需要有一定的spring boot基礎,按我現階段的了解就是,spring boot屬于是做業務開發的,所謂的微服務就是將一個大的項目分為是很多的使用spring boot進行開發的單體項目。當然如果沒有后續的話,那么這一個項目也就成了一盤散沙,沒有辦法真正的實現它的作用,于是就需要使用spring cloud將所有的spring boot單體項目整合起來,形成一個完整的項目,從而發揮它最大的作用。
??既然在一個項目中涉及到了兩種框架技術的使用,那么就需要考慮這兩種框架會不會產生沖突。那么我們應該如何查看這兩種框架的版本適用呢?我們可以參考spring cloud官網給出的答案,這個文檔是實時更新的,不用擔心過時的問題。https://spring.io/projects/spring-cloud,打開鏈接直接向下劃即可找到
??官網在這里只是提供了一個相對模糊的版本對應,想要更加具體的版本對應可以參考以下網站https://start.spring.io/actuator/info,將網站返回的JSON字符串經過工具的轉換即可發現其中的版本對應
??當然,上述兩種方法都是在boot和cloud技術版本選擇時的一種參考,真正確定下來還是要看cloud官網上面的參考doc文檔,點進去的Supported Boot Version才是最終敲定的依據
🌕 技術選型
??前面講到spring cloud是一個微服務的框架,既然是微服務就說明我們需要使用技術控制各個單體服務之間的通信,還有不同服務的調用等。于是就涉及到了這些不同功能的技術選型,我們都知道技術是在不停迭代更新的,有很多的技術停更淘汰,與此同時也有很多的技術更新迭代出來,于是我們應該知道不同的功能應該選用哪種可行的技術。
- 服務注冊中心:
- Eureka
- Zookeeper
- Consul
- Nacos √
- 服務調用:
- Ribbon
- LoadBalancer
- Feign
- OpenFeign √
- 服務降級:
- Hystrix
- Resilience4j
- Sentinel √
- 服務網關:
- Zuul
- Zuul2
- Gateway √
- 服務配置:
- Config
- Nacos √
- 服務總線:
- Bus
- Nacos √
🌕 spring boot單體模塊的搭建
🌓 創建父工程
🌒 project項目創建
修改項目名 -> 修改項目存儲地址 -> 修改maven配置 -> finished
🌒 配置字符編碼格式
🌒 配置注解生效激活
🌒 配置項目的Java的版本
🌓 父工程的pom文件
??父pom中的并不會引入相應的jar包,而是定義了版本號供子模塊使用,只有子模塊導入依賴坐標的時候(如果父pom中有,可以不指定版本號)才會引入相應的jar包
<?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>項目的組id</groupId><artifactId>項目名稱</artifactId><version>項目版本</version><packaging>pom</packaging><!--統一管理設置jar包的版本--><properties>..........</properties><!--依賴傳遞:父pom文件中的依賴版本會被子模塊自動繼承,除非子模塊中自己聲明版本,否則就使用父pom的版本,同理,父pom的依賴版本升級,子模塊也會升級到相應的版本--><dependencyManagement><dependencies><dependency>.......</dependency>......<dependency>.......</dependency></dependencies></dependencyManagement></project>
🌓 創建子模塊
??在父工程上右鍵,新建一個model
創建之后需要配置子模塊的配置文件,也就是子模塊的resources文件夾下的application.yml文件,主要就是配置端口號和數據庫相關
server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: …… ……… ………username: …… ……password: …… …… ……mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.xiaochen.springcloud.entities
然后就是創建相應的mapper、service、serviceImpl、映射文件
🌕 RestTemplate
??Rest Template就是一種對HTTPClient的封裝,是Spring提供的用于訪問Rest服務的客戶端模板工具集,其內部提供了多種便捷的用于訪問遠程http服務的方法,主要就是用于實現微服務項目中幾個服務之間的相互調用。
🌓 使用步驟
使用配置類向容器中注入RestTemplate對象
/*** @ClassName: ApplicationContextConfig* @Description: 程序配置類* @author: chenhao* @date: 2022/7/17*/
@Configuration
public class ApplicationContextConfig {@Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}
??在需要使用它的地方用@Resource注入對象,然后就是調用api實現相應的功能,全部api參考以下鏈接:https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
🌕 系統重構(子模塊間重復代碼的抽取)
??創建一個公共模塊,將公共的代碼和依賴全部抽取到這個公共模塊中,然后別的模塊如果想要使用公共模塊的代碼,就必須先對公共模塊的maven進行clean和install,然后在pom文件中導入這個公共模塊的依賴即可使用公共部分代碼