1.引言
刚分享完spring框架的四个基础核心,springboot框架同样有四个基础核心,分别是:
- 依赖管理
- 自动装配
- 监控Actuator
- CLI工具
由以上核心奠定了我们在使用springboot框架的便利性和极简性。下面依次来看每一个基础核心。依赖管理非常简单,因此在这篇文章中,顺带增加语义化版本管理内容,我们可以在自己的产品发布中,参考业界优秀项目的版本管理及流程。
2.依赖管理
依赖管理不用多说,使用 springboot 框架后,以 maven 管理依赖的项目为例,我们只需要借助 POM 中的 parent 标签,让我们的项目继承 springboot 项目,像下面这样
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
或者借助dependencyManagement标签,做依赖统一管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后就可以很方便的引入需要的具体依赖,比如引入springmvc依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
你会发现具体的依赖坐标gav中,不需要考虑版本的事情,版本已经由spring-boot-starter-parent父项目统一管理。带来了极大的方便!不用再像早期ssm,或者ssh框架整合,不光要操心依赖,还要操心依赖的版本,简直操碎了心!
再比如我们需要将springboot整合springcloud,微服务无所不在的今天,这很常见,只需要这么玩就可以
<dependencyManagement>
<dependencies>
<!--整合spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--整合spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后你就可以方便的引入springcloud的各种组件,下面这样引入feign组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3.语义化版本
上面我们引入springmvc组件,及feign组件的时候,有两个特点,不知道你有没有留意到
- artifactId:比较有特点,spring-boot-starter-xxx,spring-cloud-starter-xxx
- 不需要引入版本:版本由父项目,或者dependencyManagement统一依赖管理
针对以上小知识点,分享一下。
当我们引入spring官方提供的组件的时候,通常组件命名规范是这样的:spring-boot-starter-xxx。xxx即具体组件名称。
当我们引入非spring官方提供的组件的时候,通常组件命名规范是这样的:xxx-spring-boot-starter。xxx即具体组件名称。比如引入mybatis通用组件
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
文章最后说一下版本的事情,虽然我们在引入具体组件是,不需要指定版本,那是因为由父项目,或者dependencyManagement方式统一管理了版本。但具体该如何选择springboot,或者springcloud版本呢?比如官方最新springboot版本:spring.io/projects/sp…
看到了吗?上面的版本元素还是有点多的。以 2.3.12.RELEASE GA , 3.0.0-SNAPSHOT SNAPSHOT 为例。这是语义化版本的特质,从左往右解读,
- 2.3.12:【2】表示主版本,代表架构升级;【3】表示次版本,代表增加新特性;【12】表示bug修复版本,代表第x次bug修复
- RELEASE:表示稳定版本,可用于生产环境
- SNAPSHOT :表示快照版本,可用于学习尝鲜,不能用于生产环境
- GA:表示通用稳定版本,可用于生产环境
以上是springboot的版本解读,语义化版本大家都非常熟了。最后再看下springcloud的版本:spring.io/projects/sp…
迄今为止,springcloud发布的版本:Angel,Brixton,Camden,Dalston,Edgware,Finchley,Greenwich,Hoxton。之后的版本回到语义化版本了。
springcloud一系列单词化版本,都是伦敦的地铁站名称,官方把这系列版本叫做:发布列车。之所以这么命名,是因为
- springcloud整合了非常多的官方,非官方组件
- 每个组件都有自己的语义化版本,为了避免混淆,然后采用了发布列车的方式
好了,以上就是今天springboot依赖管理的小知识,下篇文章来看自动装配(这是重点)。