睁眼写BUG,闭眼改BUG。

Spring Boot_原理

2020.03.02

Spring Boot 基础完结, Spring Boot 高级部分笔记比这个还糙就不丢人了-.-

上一篇 >> Spring Boot_数据访问

fighting!fighting!

Spring Boot 原理

1. 几个重要的回调机制

ApplicationContextInitlalizer

SpringApplicationRunListener

ApplicationRunner

CommandLineRunner

2. 启动流程

2.1 创建SpringApplication对象

initialize(sources)
    private void initialize(Object[] sources) {
    //保存主配置类
    if (sources != null && sources.length > 0) {
        this.sources.addAll(Arrays.asList(sources));
    }

    //判断当前是否一个web
    this.webEnvironment = this.deduceWebEnvironment();
    this.setInitializers(this.getSpringFactoriesInstances(ApplicationContextInitializer.class));
    this.setListeners(this.getSpringFactoriesInstances(ApplicationListener.class));
    this.mainApplicationClass = this.deduceMainApplicationClass();
}

2.2 运行run()方法

2.3 事件监听机制

配置在META-INF/spring.factories

ApplicationContextInitlalizer

SpringApplicationRunListener

只需要放在ioc容器中

ApplicationRunner

CommandLineRunner

3. 自定义staters

starters:

  1. 这个场景需要使用的依赖是什么?
  2. 如何自动配置
@Configuration //指定这个类是一个配置类
@ConditionalOnxxx  //在指定条件成立的情况下自动配置类生效
@AutoConfigureAfter  //指定自动配置类的顺序
@Bean  //给容器中添加组件

@ConfigurationProperties结合相关xxxproperties类来绑定相关的配置
@EnableConfigurationProperties  //让xxxProperties生效加入到容器中

自动配置类能加载
将需要启动就加载的自动配置类,配置在META-INF/spring.factories

....