SpringBoot起步依赖和自动配置原理解析

本文详细探讨了SpringBoot的起步依赖和自动配置原理。从SpringBoot的父工程依赖管理,揭示了如何避免依赖冲突。接着,分析了自动配置的核心——`@SpringBootApplication`注解,包括其元注解的作用,以及`@EnableAutoConfiguration`如何启动自动配置。通过研究`@ImportResource`加载的`spring.factories`文件,展示了SpringBoot如何根据条件自动配置组件,特别以`WebServerAutoConfiguration`为例,解释了自动配置servlet Web服务器的过程。
摘要由CSDN通过智能技术生成

SpringBoot起步依赖和自动配置

起步依赖

我们知道一个SpringBoot项目都要以 spring-boot-starter-parent 作为父工程,也就是要在工程的 pom 文件中引入如下依赖(以 2.2.6版本为例):

<!-- in pom.xml of our project -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
</parent>

我们跟进 spring-boot-starter-parent.xml ,可以发现 spring-boot-starter-parent 还有个父工程即 spring-boot-dependencies

<!-- in spring-boot-starter-parent-2.2.6.RELEASE.pom -->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.2.6.RELEASE</version>
  <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

那在 spring-boot-dependencies.xml 中又做了什么呢?我们查看该 xml 文件,可以看到其定义了一部分坐标的版本、依赖管理即相关插件,以下列举了我们比较熟悉的版本控制项:

<!-- in spring-boot-dependencies-2.2.6.RELEASE.pom -->
<!-- SpringBoot起步依赖引入jar包的版本控制属性 -->
<properties>
  <activemq.version>5.15.12</activemq.version>
  <aspectj.version>1.9.5</aspectj.version>
  <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
  <commons-dbcp2.version>2.7.0</commons-dbcp2.version>
  <commons-pool2.version>2.7.0</commons-pool2.version>
  <elasticsearch.version>6.8.7</elasticsearch.version>
  <freemarker.version>2.3.30</freemarker.version>
  <hibernate.version>5.4.12.Final</hibernate.version>
  <hibernate-validator.version>6.0.18.Final</hibernate-validator.version>
  <httpclient.version>4.5.12</httpclient.version>
  <jackson.version>2.10.3</jackson.version>
  <junit.version>4.12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值