zoukankan      html  css  js  c++  java
  • ________________初学springboot11

    Springboot的运行流程

    1、判断是否是web环境

    2、加载左右Classpath下的META-INF/spring.factories  ApplicationContextInitializer 

    3、加载所有classpath下的META-INF/spring.factories  ApplicationListener

    4、推断main方法所在类

    5、开始执行run方法

    6、设置Java.awt.headless系统变量

    7、加载所有classpath下面META-INF/spring.factories springApplicationRunListener

    8、执行所有SpringApplicationRunListener的started方法

    9、实例化SpringApplicationArguments对象

    10、创建environment

    11、配置environment,主要是把run方法的参数配置到environment

    12、执行所有springApplicationRunlistener的environmentPrepared方法

    13、如果不是web环境,但是死web的environment,则把这个web的environment转换成标准的environment

    14、打印banner

    15、初始化Applicationcontext,如果是web环境,则实例化AnnotationConfigEmbeddedWebApplicationContext对象,否则实例化annotation

    16、如果beanNameGennerator不为空,就把beanNameGenerator对象注入到context里面去

    17、执行所有SpringApplicationRunListener的contextPrepared方法

    18、执行所有springApplicationRunListener的contextPrepared方法

    19、依次往spring容器中注入:ApplicationArgument,banner

    20、加载所有源到context里

    21、执行所有SpringApplicationRunListener的contextPrepared方法

    22、执行所有context的refresh方法,并调用context的registeris的registerShutdown

    23、回调,获取容器中所有appliationRunner,ConnandRunner等接口,然后排序

    24、执行所有springApplicationRunListene的finished方法

    暂存 ,系统默认参数配置

    @SpringBootApplication

    public class App {

    public static void main(String[] args) {

    SpringApplication app=new SpringApplication(App.class);

    Map<String, Object> defaultProperties=new HashMap<>();

    defaultProperties.put("user", "qiqisx");

    defaultProperties.put("password", "4656512.0a");

    app.setDefaultProperties(defaultProperties);

    ConfigurableApplicationContext context=app.run(args);

      ApplicationArguments ag=context.getBean(ApplicationArguments.class);

    System.out.println(ag.getOptionNames());

    System.out.println(context.getEnvironment().getProperty("user"));

    System.out.println(context.getEnvironment().getProperty("password"));

    context.close();

    }

    }

  • 相关阅读:
    DMA
    [计网笔记] 应用层
    为博客添加网易云音乐播放器外链
    acm对拍程序 以及sublime text3的文件自动更新插件auto refresh
    操作系统---内存管理(上) 概念 覆盖交换技术 连续分配管理方式
    操作系统---死锁的检测和解除
    C++ bitset的使用
    Codeforces Round #647 (Div. 2)
    sublime Text3 实现2:1:1三分屏效果
    操作系统---信号量以及四个进程同步问题
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9370013.html
Copyright © 2011-2022 走看看