springboot解析pom文件及解析自动配置

本文详细介绍了Spring Boot项目中POM文件的解析,包括父项目【spring-boot-starter-parent】和【spring-boot-dependencies】的作用。同时,文章探讨了Spring Boot启动器的功能和不同场景的启动器应用场景。接着,文章深入解析了Spring Boot的自动配置机制,从@SpringBootApplication注解的组成,到@EnableAutoConfiguration如何启用自动配置,再到AutoConfigurationImportSelector如何选择并加载配置。最后,文章提到了@ComponentScan注解的作用,它是如何扫描并注册组件到IoC容器的。
摘要由CSDN通过智能技术生成

解析pom文件

   父项目

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

   上面的配置是我们自己项目需要依赖的父项目【spring‐boot‐starter‐parent】

   我们现在新建的SpringBoot项目是【spring‐boot‐starter‐parent】项目下的一个子项目,我们的SpringBoot项目继承了【spring‐boot‐starter‐parent】父项目。

  【spring‐boot‐starter‐parent】父项目继承了【spring-boot-dependencies】

spring‐boot‐starter‐parent-2.4.0.pom

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.4.0</version>
</parent>

【spring‐boot‐starter‐parent】父项目是【spring-boot-dependencies】的子项目

spring-boot-dependencies-2.4.0.pom

<properties>
  <activemq.version>5.16.0</activemq.version>
  <antlr2.version>2.7.7</antlr2.version>
  <appengine-sdk.version>1.9.83</appengine-sdk.version>
  <artemis.version>2.15.0</artemis.version>
  <aspectj.version>1.9.6</aspectj.version>
  <assertj.version>3.18.1</assertj.version>
  <atomikos.version>4.0.6</atomikos.version>
  <awaitility.version>4.0.3</awaitility.version>
  <bitronix.version>2.1.4</bitronix.version>
......
</properties>

   上面的<properties>元素中配置的是我们所创建的项目的所有依赖包版本

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-amqp</artifactId>
      <version>${activemq.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-blueprint</artifactId>
      <version>${activemq.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
      <version>${activemq.version}</version>
    </dependency>
.......
</dependencies>
</dependencyManagement>

   上面的<dependencies>元素中配置的是我们所创建的项目的所有依赖包的导入

   这个【spring‐boot‐dependencies】项目实际是用来真正管理Spring Boot应用里面的所有依赖包。有了【spring‐boot‐dependencies】项目以后我们新建的SpringBoot项目所需要的依赖包导入就不要在再配置版本和<dependencies>元素导入依赖,从【spring‐boot‐dependencies】项目中继承就可以了。

   SpringBoot启动器

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

   命名:spring-boot-starter-xxxx  [SpingBoot的启动器]

   spring-boot-starter:帮助我们导入springboot基础依赖包

   spring-boot-starter-web:帮我们导入了web模块正常运行所依赖包。

   spring-boot-starter-test:帮我们导入了单元测试模块正常运行所依赖包。

   Spring Boot将所有的功能的依赖包都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 那么实现相关功能的所有依赖都会自动导入进来,且没有版本冲突。要用什么功能就导入什么场景的启动器就可以了 。

   基本的启动器

   Spring Boot应用启动器基本的一共有44种,具体如下:

      1)spring-boot-starter:这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。

      2)spring-boot-starter-actuator:帮助监控和管理应用。

      3)spring-boot-starter-amqp:通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol)。

      4)spring-boot-starter-aop:支持面向方面的编程即AOP,包括spring-aop和AspectJ。

      5)spring-boot-starter-artemis:通过Apache Artemis支持JMS的API(Java Message Service API)。

      6)spring-boot-starter-batch:支持Spring Batch,包括HSQLDB数据库。

      7)spring-boot-starter-cache:支持Spring的Cache抽象。

      8)spring-boot-starter-cloud-connectors:支持Spring Cloud Connectors,简化了在像Cloud Foundry或Heroku这样的云平台上连接服务。

      9)spring-boot-starter-data-elasticsearch:支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。

      10)spring-boot-starter-data-gemfire:支持GemFire分布式数据存储,包括spring-data-gemfire。

      11)spring-boot-starter-data-jpa:支持JPA(Java Persistence API),包括spring-data-jpa、spring-orm、Hibernate。

      12)spring-boot-starter-data-mongodb:支持MongoDB数据,包括spring-data-mongodb。

      13)spring-boot-starter-data-rest:通过spring-data-rest-webmvc,支持通过REST暴露Spring Data数据仓库。

      14)spring-boot-starter-data-solr:支持Apache Solr搜索平台,包括spring-data-solr。

      15)spring-boot-starter-freemarker:支持FreeMarker模板引擎。

      16)spring-boot-starter-groovy-templates:支持Groovy模板引擎。

      17)spring-boot-starter-hateoas:通过spring-hateoas支持基于HATEOAS的RESTful Web服务。

      18)spring-boot-starter-hornetq:通过HornetQ支持JMS。

      19)spring-boot-starter-integration:支持通用的spring-integration模块。

      20)spring-boot-starter-jdbc:支持JDBC数据库。

      21)spring-boot-starter-jersey:支持Jersey RESTful Web服务框架。

      22)spring-boot-starter-jta-atomikos:通过Atomikos支持JTA分布式事务处理。

      23)spring-boot-starter-jta-bitronix:通过Bitronix支持JTA分布式事务处理。

      24)spring-boot-starter-mail:支持javax.mail模块。

      25)spring-boot-starter-mobile:支持spring-mobile。

      26)spring-boot-starter-mustache:支持Mustache模板引擎。

      27)spring-boot-starter-redis:支持Redis键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值