SpringBoot的混淆点

今天突然意识到自从开始使用SpringBoot之后,就再也没有引入过SpringMvc和tomcat等依赖项。这是为什么呢?

先说pring-boot-starter-parent

这段代码是Maven项目中的父项目定义,它使用了Spring Boot提供的spring-boot-starter-parent作为父项目。

使用spring-boot-starter-parent作为父项目有以下作用:

  1. 继承了Spring Boot的默认配置,包括依赖管理和插件配置等,简化了项目的配置工作。
  2. 确保子项目使用了与Spring Boot版本相匹配的依赖和插件版本。
  3. 提供了一致的构建配置,使得子项目可以遵循Spring Boot的最佳实践。

通过定义spring-boot-starter-parent作为父项目,您的子项目可以从Spring Boot的默认配置中受益,并且更容易地与Spring Boot框架进行集成和协同工作。

但它只能是指定版本配置,还需要我们自己引入要用的依赖。

例如,如果您在项目中引入了 spring-boot-starter-web Starter,它会自动引入一系列与 Web 开发相关的依赖,包括 Spring MVC、Tomcat 等,并且这些依赖的版本都是由 Spring Boot 父项目管理的。

如果您没有显式地引入 spring-boot-starter-web Starter,而只是继承了 spring-boot-starter-parent 父项目,那么您将无法直接使用 Spring MVC 和嵌入式的 Tomcat 服务器。

Spring Boot 的 Starter 依赖是用于简化项目配置的,每个 Starter 都包含了一组相关的依赖,以便于快速启动特定类型的应用程序。如果您没有引入与 Web 相关的 Starter,Spring Boot 将不会自动包含 Spring MVC 和 Tomcat 等依赖项。

如果您希望在项目中使用 Spring MVC 和 Tomcat,您需要手动在项目的 pom.xml 文件中添加相应的依赖。例如,您可以添加以下依赖来引入 Spring MVC 和 Tomcat:

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

通过显式地添加上述依赖,您就可以在项目中使用 Spring MVC 框架和嵌入式的 Tomcat 服务器了。这样可以确保项目具备 Web 应用程序所需的基本功能。

spring-boot-starter-parent 父项目主要用于管理各种常用依赖的版本信息,并没有直接引入所有这些依赖。它定义了一组常见依赖的版本号,以供子项目继承并使用。

一般来说,spring-boot-starter-parent 父项目会管理以下方面的依赖版本:

  1. Spring Boot 相关依赖:如 Spring Boot 核心模块、Spring Boot Starter 等。
  2. Spring Framework 相关依赖:包括 Spring Core、Spring MVC、Spring Data 等。
  3. 测试框架依赖:如 JUnit、Mockito、Spring Test 等。
  4. 日志框架依赖:如 SLF4J、Logback 等。
  5. 数据库驱动依赖:如 H2 Database、HikariCP 等。
  6. Web 开发相关依赖:如 Tomcat Embed、Jackson JSON 等。

这些依赖的版本号是由 Spring Boot 团队维护和管理的,确保了它们之间的兼容性。当您继承 spring-boot-starter-parent 父项目时,可以直接使用这些依赖,并且无需再手动指定版本号。

需要注意的是,并非所有常用依赖的版本都会在 spring-boot-starter-parent 中进行管理,因此在实际开发中,如果有其他特定的依赖需要使用,仍然需要在项目的 pom.xml 文件中显式声明这些依赖并指定版本号。

如果您在项目中显式引入了与 spring-boot-starter-parent 父项目已经管理的依赖相同的版本号,那么您定义的版本号将会覆盖父项目中定义的版本号。

当您在项目的 pom.xml 文件中添加对某个依赖的引用时,Maven 会首先检查您自己的依赖声明。如果您指定了特定的版本号,则会使用您指定的版本号。如果您未指定版本号,则 Maven 会查找父项目中定义的版本号。

如果您想继续使用 spring-boot-starter-parent 父项目中管理的版本号,而不是覆盖它们,请确保在您的项目中不指定特定的版本号。例如,您可以这样声明一个依赖,而不指定版本号:

 

xml复制代码

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

这样,Maven 将使用 spring-boot-starter-parent 父项目中定义的版本号来解析和引入该依赖。这样做可以确保您使用的依赖与 spring-boot-starter-parent 中的其他依赖保持兼容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值