SpringBoot笔记

SpringBoot自动装配

来自 最通俗易懂,最详细的springboot自动配置原理解析

Starter 依赖管理

spring-boot-starter-parent
在pom.xml中,会存在一个父项目

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
</parent>

该项目用来做依赖管理,托管子项目,点击进去还存在一个父项目

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

再次点击进去会发现,里面管理了所有依赖的版本。

<properties>
    <activemq.version>5.16.1</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.88</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>
    ................

所以得到一个结论:

spring-boot-dependencies存放着SpringBoot的核心依赖,管理springboot应用里面的所有依赖版本。所以以后引入一些SpringBoot依赖的时候,不需要指定版本,但是没有出现在spring-boot-dependencies中的依赖需要手动导入并声明版本号。

spring-boot-starter-web
再回到pom.xml中,pom.xml中还导入了如下依赖

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

怎么理解spring-boot-starter-web呢?

可以拆分为两部分来看spring-boot-starter 和web

spring-boot-starter :spring的场景启动器

springboot将所有的功能场景都抽取出来,做成一个个starters(启动器),只需要在项目中引入这些starters相关场景的所有依赖都会导入进来,而且版本会自动控制。

Starters官方解释为一系列依赖描述的组合,可以通过导入这些Starters就会有相应的依赖

自动配置

@SpringBootApplication
标注一个类为SpringBoot的主程序类,每次启动都要通过这个主程序来启动

@SpringBootApplication
public class Springboot01HelloworldQuick03Application {
    public static void main(String[] args) {
     SpringApplication.run(Springboot01HelloworldQuick03Application.class, args);
    }
}

结论:springboot所有自动配置都在启动的时候扫描并加载。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容