springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)

springboot概述

SpringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。

大家已经感受了 SpringBoot 程序,回过头看看 SpringBoot 主要作用是什么,就是简化 Spring 的搭建过程和开发过程。

原始 Spring 环境搭建和开发存在以下问题:

  • 配置繁琐

  • 依赖设置繁琐

SpringBoot 程序优点恰巧就是针对 Spring 的缺点

  • 自动配置。这个是用来解决 Spring 程序配置繁琐的问题

  • 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题

  • 辅助功能(内置服务器,...)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用 tomcat 插件,而是使用 SpringBoot 内置的服务器。

接下来我们来说一下 SpringBoot 的起步依赖

我们使用 Spring Initializr 方式创建的 Maven 工程的的 pom.xml 配置文件中自动生成了很多包含 starter 的依赖,如下图

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第1张图片

这些依赖就是启动依赖,接下来我们探究一下他是如何实现的。

1.2.1.1 探索父工程

从上面的文件中可以看到指定了一个父工程,我们进入到父工程,发现父工程中又指定了一个父工程,如下图所示

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第2张图片

再进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第3张图片

上图中的 properties 标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties 中我们找 servlet 和 mysql 的版本如下图

dependencyManagement 标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupid 和 artifactId 不需要定义 version。

而 build 标签中也对插件的版本进行了锁定,如下图

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第4张图片

看完了父工程中 pom.xml 的配置后不难理解我们工程的的依赖为什么都没有配置 version。

1.2.1.2 探索依赖

在我们创建的工程中的 pom.xml 中配置了如下依赖

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第5张图片

进入到该依赖,查看 pom.xml 的依赖会发现它引入了如下的依赖

springboot起步依赖介绍、以及使用boot的pom.xml解析(超详细)_第6张图片

里面的引入了 spring-web 和 spring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因。

而依赖 spring-boot-starter-tomcat ,从名字基本能确认内部依赖了 tomcat,所以我们的工程才能正常启动。

结论:以后需要使用技术,只需要引入该技术对应的起步依赖即可

1.2.1.3 小结

starter

  • SpringBoot 中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的

parent

  • 所有 SpringBoot 项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的

  • spring-boot-starter-parent(2.5.0)与 spring-boot-starter-parent(2.4.6)共计57处坐标版本不同

实际开发

  • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供

G:groupid
A:artifactId
V:version
  • 如发生坐标错误,再指定version(要小心版本冲突)

(是可以我们自己强制使用某个版本的,不使用boot提供的)

你可能感兴趣的:(spring全家桶,spring,后端,springboot)