Blogger Information
Blog 41
fans 0
comment 0
visits 25688
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
3、【转载】Spring Boot starter入门
自由之上
Original
467 people have browsed it

传统的 Spring 项目想要运行,不仅需要导入各种依赖,还要对各种 XML 配置文件进行配置,十分繁琐,但 Spring Boot 项目在创建完成后,即使不编写任何代码,不进行任何配置也能够直接运行,这都要归功于 Spring Boot 的 starter 机制。

1、starter

Spring Boot 将日常企业应用研发中的各种场景都抽取出来,做成一个个的 starter(启动器),starter 中整合了该场景下各种可能用到的依赖,用户只需要在 Maven 中引入 starter 依赖,SpringBoot 就能自动扫描到要加载的信息并启动相应的默认配置。starter 提供了大量的自动配置,让用户摆脱了处理各种依赖和配置的困扰。所有这些 starter 都遵循着约定成俗的默认配置,并允许用户调整这些配置,即遵循“约定大于配置”的原则。

以 spring-boot-starter-web 为例,它能够为提供 Web 开发场景所需要的几乎所有依赖,因此在使用 Spring Boot 开发 Web 项目时,只需要引入该 Starter 即可,而不需要额外导入 Web 服务器和其他的 Web 依赖。

在 pom.xml 中引入 spring-boot-starter-web

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <!--SpringBoot父项目依赖管理-->
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.4.5</version>
  10. <relativePath></relativePath>
  11. </parent>
  12. ....
  13. <dependencies>
  14. <!--导入 spring-boot-starter-web-->
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-web</artifactId>
  18. </dependency>
  19. ...
  20. </dependencies>
  21. ...
  22. </project>

在该项目中执行以下 mvn 命令查看器依赖树。

  1. mvn dependency:tree

2、spring-boot-starter-parent

spring-boot-starter-parent 是所有 Spring Boot 项目的父级依赖,它被称为 Spring Boot 的版本仲裁中心,可以对项目内的部分常用依赖进行统一管理。

  1. <!--SpringBoot父项目依赖管理-->
  2. <parent>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-parent</artifactId>
  5. <version>2.4.5</version>
  6. <relativePath/>
  7. </parent>

Spring Boot 项目可以通过继承 spring-boot-starter-parent 来获得一些合理的默认配置,它主要提供了以下特性:

  • 默认 JDK 版本(Java 8)
  • 默认字符集(UTF-8)
  • 依赖管理功能
  • 资源过滤
  • 默认插件配置
  • 识别 application.properties 和 application.yml 类型的配置文件

查看 spring-boot-starter- parent 的底层代码,可以发现其有一个父级依赖 spring-boot-dependencies。

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-dependencies</artifactId>
  4. <version>2.4.5</version>
  5. </parent>

spring-boot-dependencies 的底层代码如下。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-dependencies</artifactId>
  8. <version>2.4.5</version>
  9. <packaging>pom</packaging>
  10. ....
  11. <properties>
  12. <activemq.version>5.16.1</activemq.version>
  13. <antlr2.version>2.7.7</antlr2.version>
  14. <appengine-sdk.version>1.9.88</appengine-sdk.version>
  15. <artemis.version>2.15.0</artemis.version>
  16. <aspectj.version>1.9.6</aspectj.version>
  17. <assertj.version>3.18.1</assertj.version>
  18. <atomikos.version>4.0.6</atomikos.version>
  19. ....
  20. </properties>
  21. <dependencyManagement>
  22. <dependencies>
  23. <dependency>
  24. <groupId>org.apache.activemq</groupId>
  25. <artifactId>activemq-amqp</artifactId>
  26. <version>${activemq.version}</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.apache.activemq</groupId>
  30. <artifactId>activemq-blueprint</artifactId>
  31. <version>${activemq.version}</version>
  32. </dependency>
  33. ...
  34. </dependencies>
  35. </dependencyManagement>
  36. <build>
  37. <pluginManagement>
  38. <plugins>
  39. <plugin>
  40. <groupId>org.codehaus.mojo</groupId>
  41. <artifactId>build-helper-maven-plugin</artifactId>
  42. <version>${build-helper-maven-plugin.version}</version>
  43. </plugin>
  44. <plugin>
  45. <groupId>org.flywaydb</groupId>
  46. <artifactId>flyway-maven-plugin</artifactId>
  47. <version>${flyway.version}</version>
  48. </plugin>
  49. ...
  50. </plugins>
  51. </pluginManagement>
  52. </build>
  53. </project>

以上配置中,部分元素说明如下:

  1. dependencyManagement :负责管理依赖;
  2. pluginManagement:负责管理插件;
  3. properties:负责定义依赖或插件的版本号。

spring-boot-dependencies 通过 dependencyManagement 、pluginManagement 和 properties 等元素对一些常用技术框架的依赖或插件进行了统一版本管理,例如 Activemq、Spring、Tomcat 等。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post