SpringBoot学习 — 自动装配原理

目录

pom.xml

启动器 spring-boot-starter

主启动类 

@SpringBootApplication

结论

SpringApplication


pom.xml

  • 父项目中点进去会发现,还有一个父依赖,spring-boot-dependencies:核心依赖
  • SpringBoot的版本控制中心
  • 以后导入依赖默认是不需要写版本的,但是,如果导入的包没有在依赖中管理,就需要手动配置版本。

启动器 spring-boot-starter

  • spring-boot-starter-xxx:就是SpringBoot的场景启动器。
  • 比如 spring-boot-starter-web ,帮我们导入了web模块正常运行所依赖的组件。
  • SpringBoot 将所有的功能常见都抽取出来,做成一个个的starter(启动器),只需要在项目中引入这些starter,所有相关依赖都会导入进来。我们要用什么功能就导入什么样的场景启动器即可。

主启动类 


@SpringBootApplication   //使用此注解说明这是一个SpringBoo应用
public class SpringbootApplication {

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

}

@SpringBootApplication

标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用。

进入这个注解:

@org.springframework.boot.SpringBootConfiguration
@org.springframework.boot.autoconfigure.EnableAutoConfiguration
@org.springframework.context.annotation.ComponentScan

 @ComponentScan

这个注解对应XML配置中的元素;

自动扫描并加载符合条件的组件或bean,将这个bean定义加载到IOC容器中。

@SpringBootConfiguration

标注在某个类上,表示这是SpringBoot的配置类。

@org.springframework.boot.SpringBootConfiguration —>

@org.springframework.context.annotation.Configuration ->

@org.springframework.stereotype.Component

点进去的 @Configuration 说明这是一个配置类,配置类就是对应Spring的xml配置文件;

再点进去 @Component ,这就说明,启动类本身也是Spring 中的一个组件,负责启动应用。

@EnableAutoConfiguration

@org.springframework.boot.autoconfigure.AutoConfigurationPackage
@org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
...

该注解,开启自动配置功能,也就是告诉SpringBoot开启自动配置功能,使用了该注解自动配置才能生效。

以前需要自己配置的东西,现在SpringBoot帮我们配置。

1.点进去 @AutoConfigurationPackage :自动配置包

@org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationPackages.Registrar.class})
public @interface AutoConfigurationPackage {
}

@Import Spring底层注解,给容器中导入一个组件。

Registrar.class : 将主启动类的所在包及 包下面所有子包里面的组件扫描到Spring容器。

2.点进去 @Import({.AutoConfigurationImportSelector.class}) 给容器导入组件

AutoConfigurationImportSelector 自动配置导入选择器

spring.factories

打开spring.factories 可以看到很多配置文件,这里就是自动配置的根源。

SpringBoot学习 — 自动装配原理_第1张图片

在这些自动配置类中我们可以打开一个,例如  WebMvcAutoConfiguration,

可以看到里面都是JavaConfig配置类,还注入了一些bean。

结论

  • SpringBoot在启动的时候,从类路径下的META-INF/spring.factories 中获取EnableAutoConfiguration 指定的值。
  • 将这些值作为自动配置类导入容器,自动配置类就生效,开始自动配置工作。

SpringApplication

这个类主要做了一下四件事情:

  • 推断应用的类型是普通的项目还是web项目
  • 查找并加载所有可能初始化器,设置到initializers属性中
  • 找出所有的应用程序监听器,设置到listeners属性中
  • 推断并设置main方法的定义类,找到运行的主类

 

本文参考自狂神说。

你可能感兴趣的:(框架)