关键词:
public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; FailureAnalyzers analyzers = null; configureHeadlessProperty(); //获取SpringApplicationRunListeners;从类路径下META-INF/spring.factories SpringApplicationRunListeners listeners = getRunListeners(args); //回调所有的获取SpringApplicationRunListener.starting()方法 listeners.starting(); try { //封装命令行参数 ApplicationArguments applicationArguments = new DefaultApplicationArguments( args); //准备环境 ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments); //创建环境完成后回调SpringApplicationRunListener.environmentPrepared();表示环境准备完成 Banner printedBanner = printBanner(environment); //创建ApplicationContext;决定创建web的ioc还是普通的ioc context = createApplicationContext(); //异常报告 analyzers = new FailureAnalyzers(context); //准备上下文环境;将environment保存到ioc中;而且applyInitializers(); //applyInitializers():回调之前保存的所有的ApplicationContextInitializer的initialize方法 //回调所有的SpringApplicationRunListener的contextPrepared(); //prepareContext运行完成以后回调所有的 SpringApplicationRunListener的contextLoaded(); prepareContext(context, environment, listeners, applicationArguments, printedBanner); //s刷新容器;ioc容器初始化(如果是web应用还会创建嵌入式的Tomcat);Spring注解版 //扫描,创建,加载所有组件的地方;(配置类,组件,自动配置) refreshContext(context); //从ioc容器中获取所有的ApplicationRunner和CommandLineRunner进行回调 //ApplicationRunner先回调,CommandLineRunner再回调 afterRefresh(context, applicationArguments); //所有的SpringApplicationRunListener回调finished方法 listeners.finished(context, null); stopWatch.stop(); if (this.logStartupInfo) { new StartupInfoLogger(this.mainApplicationClass) .logStarted(getApplicationLog(), stopWatch); } //整个SpringBoot应用启动完成以后返回启动的ioc容器; return context; } catch (Throwable ex) { handleRunFailure(context, listeners, analyzers, ex); throw new IllegalStateException(ex); } }
//获取SpringApplicationRunListeners;从类路径下META-INF/spring.factories
//回调所有的获取SpringApplicationRunListener.starting()方法
//准备环境
//创建环境完成后回调SpringApplicationRunListener.environmentPrepared();表示环境准备完成
//创建ApplicationContext;决定创建web的ioc还是普通的ioc
//准备上下文环境;将environment保存到ioc中;而且applyInitializers();
//applyInitializers():回调之前保存的所有的ApplicationContextInitializer的initialize方法
//回调所有的SpringApplicationRunListener的contextPrepared();
//prepareContext运行完成以后回调所有的 SpringApplicationRunListener的contextLoaded();
//从ioc容器中获取所有的ApplicationRunner和CommandLineRunner进行回调
//ApplicationRunner先回调,CommandLineRunner再回调
springboot核心原理:自动配置、事件驱动、condition
参考技术ASpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理。如果还不清楚Spring原理的,可以先查看博主之前的文章,本篇主... 查看详情
springboot的配置文件说明
1、以servlet的方式启动SpringBoot正常情况下要复制代码到tomcat去启动,但springboot内置tomcat了,配置好就可以直接run方法直接运行。 2、直接run运行 查看详情
一文搞懂springboot启动原理
SpringBoot为我们做的自动配置,确实方便快捷,但一直搞不明白它的内部启动原理,这次就来一步步解开SpringBoot的神秘面纱,让它不再神秘。@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.c... 查看详情
面试题:springboot的自动配置原理及定制starter(代码片段)
3、SpringBoot的自动配置原理packagecom.mmall;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassDemoApplication publicstaticvoidmain(String[]args) SpringApplication.run(DemoApplication.class,arg... 查看详情
最全面的springboot教程——springboot运行原理分析(代码片段)
前言本文为最全面的SpringBoot教程(六)——SpringBoot运行原理分析相关知识,下边将对SpringBoot运行原理以及自动配置原理进行详尽的分析介绍~📌博主主页:小新要变强的主页👉Java全栈学习路线可参考ÿ... 查看详情
springboot-运行部署
...的标准方法。我们的main方法SpringApplication通过调用委托给SpringBoot的类run。SpringApplication引导我们的应用程序,启动Spring,然后启动自动配置的TomcatWeb服务器。我们需要Example.class作为参数传递给run方法,以告诉SpringApplication哪个 查看详情
springboot怎么启动
SpringBoot是Spring产品中一个新的子项目,致力于简便快捷地搭建基于Spring的独立可运行的应用。大多数的SpringBoot应用只需要非常少的Spring配置。你能够使用SpringBoot创建Java应用并通过java-jar来运行或者创建传统的通过war来部署的应... 查看详情
boot自动配置的原理
参考技术ASpringBoot是基于Spring开发的,是约定大于配置的核心思想。并且集成了大量的第三方库配置比如redis、mongoDB、jpa等。SpringBoot就相当于maven整合了所有jar包,SpringBoot整合了所有框架。其设计目的是用来简化新Spring应用的初... 查看详情
springboot运行原理
参考技术ASpringBoot是一个基于Spring开发,集成了大量第三方库配置的javaweb开发框架pom.xml父依赖其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件。以后我们导入依赖默认是不需要写版本的。启动器spring-boot-starters... 查看详情
springboot启动原理
从一个SpringBoot启动类说起。@SpringBootApplicationpublicclassDemoApplication{publicstaticvoidmain(Stirng[]args){SpringApplication.run(DemoApplication.class,args);}}@SpringBootApplication是以下三个Annotation的复合:@Con 查看详情
涨姿势:springboot2.x启动全过程源码分析
目录SpringApplication实例run方法运行过程总结上篇《SpringBoot2.x启动全过程源码分析(一)入口类剖析》我们分析了SpringBoot入口类SpringApplication的源码,并知道了其构造原理,这篇我们继续往下面分析其核心run方法。SpringApplication实... 查看详情
springboot工作原理
SpringBoot为我们做的自动配置,确实方便快捷,但一直搞不明白它的内部启动原理,这次就来一步步解开SpringBoot的神秘面纱,让它不再神秘。 @SpringBootApplication publicclassApplication{ publicstaticvoidmain(String[]args){ SpringAppli... 查看详情
springboot的工作原理
参考技术A承接springmvc的工作原理,这里探讨springboot是如何工作的,由springboot的启动类SpringbootdemoSimpleApplication.java开始,我们知道,如果想把springboot的项目打包放到tomcat里运行,需要将启动类继承SpringBootServletInitializer因为SpringB... 查看详情
springboot启动原理(代码片段)
正文我们开发任何一个SpringBoot项目,都会用到如下的启动类123456@SpringBootApplicationpublicclassApplicationpublicstaticvoidmain(String[]args)SpringApplication.run(Application.class,args);从上面代码可以看出,Annot 查看详情
springboot核心原理:自动配置事件驱动condition(代码片段)
...了解来源:blog.csdn.net/l6108003/article/details/106966386前言SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理。如... 查看详情
springbootrun方法啥时候扫描的配置类
SpringBootRun方法会在应用启动时扫描配置类。SpringBootRun方法是一个静态方法,它可以接受一个参数,该参数是一个字符串数组,其中包含要传递给应用程序的参数。SpringBootRun方法会调用SpringApplication类的run方法,该方法会接受一... 查看详情
springboot启动配置原理
几个重要的事件回调机制ApplicationContextInitializerSpringApplicationRunListenerApplicationRunnerCommandLineRunner 启动流程1.创建SpringApplication对象1initialize(sources);2privatevoidinitialize(Object[]sources){3//保 查看详情
springboot热启动之二
一、在pom文件添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true< 查看详情