SpringBoot2.2.13中starter的原理
在上一节的分析中,我们知道spring-boot-starter-parent
出厂就约定好了项目中用到的第三方JAR包的maven坐标,但是项目中真正需要引入的JAR包是在项目的<dependencies>
中引入的。我再次贴一下项目pom文件:
<?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>
<!--Springboot父项目依赖管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!--将这里的版本号,修改成自己刚刚编译的版本号,方便调试 -->
<version>2.2.13.RELEASE.aibei</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ai_bei</groupId>
<artifactId>springboot-ai-bei-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--真正需要引入的JAR包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
之前的的Spring WEB 项目,还需要依赖外部的Tomcat来实现部署,相比现在的Springboot项目,只需要简单的引入一个spring-boot-starter-web
依赖,就可以实现之前的Spring WEB 项目的全部功能。
当我们点进去看看spring-boot-starter-web
的实现如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
会发现,spring-boot-starter-web
的pom文件中引入了下面的依赖:spring-boot-starter ,spring-boot-starter-json,spring-boot-starter-tomcat,spring-boot-starter-validation,spring-web,spring-webmvc
。
显然:spring-boot-starter-web
是将Spring Web项目所需的项目依赖进行了项目整合,当我们创建一下新的模块并且在<dependencies>
中引入了spring-boot-starter-web
这个Starter后,那么项目也就会直接依赖starter中所依赖的JAR包。
Spring Web项目需要多且繁杂的配置文件,Springboot项目显然干净简洁。当我们依赖spring-boot-starter-web
后,我们可以通过application的配置来实现对账模块项的配置,并且也可以直接使用模块它初始的配置值。以及还能实现自动配置类对模块中Bean的自动装配。
Springboot官方提供很多的starter,第三方产商也主动集成Springboot开发并且提供他们的starter。参考地址:https://docs.spring.io/spring-boot/docs/2.2.13.RELEASE/reference/htmlsingle/#using-boot-starter