# springcloud2021
**Repository Path**: BeheadingKill/springcloud2021
## Basic Information
- **Project Name**: springcloud2021
- **Description**: springCloud相关技术学习总结
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-26
- **Last Updated**: 2022-01-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Springboot版本和springcloud版本
## springboot版本
spring-boot的git源码地址:https://github.com/spring-projects/spring-boot/releases/
## springcloud版本
spring-cloud的git源码地址:https://github.com/spring-projects/spring-cloud
springcloud官网:https://spring.io/projects/spring-cloud
```
Spring Cloud 采用了英国伦敦地铁站的名称来命名,并由地铁站名称字母A-Z依次类推的形式来发布迭代版本
SpringCloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。
为了管理SpringCloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个SpringCloud版
本对应的子项目版本。为了避免SpringCloud版本号与子项目版本号混淆,SpringCloud版本采用了名
称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。
例如Angel是第一个版本, Brixton是第二个版本。
当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,
简称SRX版本,比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本
从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的
"日历化" 版本命名方式,例如:
Spring Cloud 2020.0.0-M1 Released
```

## springboot与springcloud的关系
springBoot与springCloud的关系,如:https://spring.io/projects/spring-cloud#overview

更详细的对应结果:https://start.spring.io/actuator/info
## 本项目springboot与springcloud版本及其相关版本
1. springcloud Hoxton.SR1
2. springboot 2.2.2.RELEASE
3. spring cloud alibaba 2.1.0.RELEASE
4. java jdk1.8
5. Maven 3.6.1
6. Mysql 5.7以上
2.x常用组件的pom
```
org.springframework.boot
spring-boot-dependencies
2.2.2.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR1
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
```
# springcloud的各种组件的停更/升级/替换
cloud的组件条目:

springcloud官方网站Hoxton.SR1文档:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/
springcloud中文文档:https://www.bookstack.cn/read/spring-cloud-docs/docs-index.md
springboot2.2.2文档:https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/htmlsingle/
# 微服务架构编码构建
## 约定 >配置 > 编码
## idea新建project工作空间
### 微服务cloud整体聚合父工程Project
1. New Project

2. 聚合总父工程名字

3. Maven选版本

4. 工程名字

5. 字符编码

6. 注解生效激活

7. java编译版本选8

8. File Type过滤

### 父工程pom
```
4.0.0
com.atguigu.springcloud
mscloud03
1.0-SNAPSHOT
pom
UTF-8
1.8
1.8
4.12
1.2.17
1.16.18
5.1.47
1.1.16
1.3.0
org.springframework.boot
spring-boot-dependencies
2.2.2.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR1
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis.spring.boot.version}
junit
junit
${junit.version}
log4j
log4j
${log4j.version}
org.projectlombok
lombok
${lombok.version}
true
org.springframework.boot
spring-boot-maven-plugin
true
true
```
### Maven工程落地
#### Maven中的DependencyManagement和Dependencies
dependencyManagement
Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。
通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。
使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。
Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个
dependencyManagement 元素中指定的版本号。
这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一
个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目
的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可。
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,
并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;
如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。