启动原理 运行流程 自动配置原理

一、启动原理

SpringApplication.run(主程序类)
– new SpringApplication(主程序类)
• 判断是否web应用
• 加载并保存所有ApplicationContextInitializer(META-INF/spring.factories),
• 加载并保存所有ApplicationListener
• 获取到主程序类
– run()
• 回调所有的SpringApplicationRunListener(META-INF/spring.factories)的starting
• 获取ApplicationArguments
• 准备环境&回调所有监听器( SpringApplicationRunListener )的environmentPrepared
• 打印banner信息
• 创建ioc容器对象(
– AnnotationConfigEmbeddedWebApplicationContext(web环境容器)
– AnnotationConfigApplicationContext(普通环境容器)

– run()
• 准备环境
– 执行ApplicationContextInitializer. initialize()
– 监听器SpringApplicationRunListener回调contextPrepared
– 加载主配置类定义信息
– 监听器SpringApplicationRunListener回调contextLoaded
• 刷新启动IOC容器;
– 扫描加载所有容器中的组件
– 包括从META-INF/spring.factories中获取的所有EnableAutoConfiguration组件
• 回调容器中所有的ApplicationRunner、CommandLineRunner的run方法
• 监听器SpringApplicationRunListener回调finished

启动流程:

1、 创建SpringApplication对象,加载并保存所有ApplicationContextInitializer(META-INF/spring.factories),从类路径下找到配置的所有applicationListener保存起来

2、 运行run方法

SprigBoot核心技术的更多相关文章

  1. SpingMVC 核心技术帮助文档

    声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...

  2. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  3. .NET单元测试的艺术-2.核心技术

    开篇:上一篇我们学习基本的单元测试基础知识和入门实例.但是,如果我们要测试的方法依赖于一个外部资源,如文件系统.数据库.Web服务或者其他难以控制的东西,那又该如何编写测试呢?为了解决这些问题,我们需 ...

  4. 大叔最新课程~MVC核心技术剖析

    <MVC核心技术剖析介绍> 主讲:仓储大叔 时间:2016-12-04 20:30分 MVC各层分工 Http请求的过程 如何查找Action 如何渲染视图 ViewModel,DTO,D ...

  5. Struts2核心技术简介

    Struts2核心技术简介 使用Struts2框架,只要注重以下三大元素:配置文件.映射文件和Action: 全局属性文件struts.properties:保存系统运行的一些参数变量,整个系统只有一 ...

  6. Struts核心技术简介

    Struts核心技术简介 1.Struts内部机制   Struts是一种基于MVC经典设计模式的开发源代码的应用框架,它通过把Servlet.JSP.JavaBean.自定义标签和信息资源整合到一个 ...

  7. Hibernate核心技术简介

    Hibernate核心技术简介 1.Hibernate映射文件开发     Hibernate映射文件就是项目中*.hbm.xml文件,其主要是完成各元素的配置,包括根元素.类元素.定义主键.设置主键 ...

  8. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

  9. 大叔最新课程~EF核心技术剖析

    EF核心技术剖析介绍 数据上下文(共享对象与实例对象的选择) 自动初始化(Initializer初始化的几种方式) 数据迁移(Migrations如何使用及其重要作用) 实体关系映射(一对一,一对多, ...

随机推荐

  1. LeetCode——First Bad Version

    Description: You are a product manager and currently leading a team to develop a new product. Unfort ...

  2. LeetCode——Happy Number

    Description: Write an algorithm to determine if a number is "happy". A happy number is a n ...

  3. js判断手机型号

    由于oppo手机自带浏览器的高度底部多了144px导航栏 所以:专门针对oppo手机做适配: var dowphone = document.getElementById("dowphone ...

  4. PHP关于验证

    验证身份证号码 /** * 验证身份证号 * @param $vStr * @return bool */ private function _isCreditNo($vStr) { $vCity = ...

  5. 最舒适的路(并查集+枚举)(hdu1598)

    hdu1598 find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768 ...

  6. JQueryUI之Autocomplete

    JQueryUI之Autocomplete JQuery UI 是以 JQuery 为基础的开源 JavaScript 网页用户界面代码库.包含底层用户交互.动画.特效和可更换主题的可视控件,这些控件 ...

  7. Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUM、ROWID)

    Oracle Schema Objects Oracle Schema Objects——Tables——Oracle Data Types Oracle伪列 在Oracle数据库之中为了实现完整的关 ...

  8. Python开发【项目】:博客后台

    概述 通过自己写的博客后台代码.思路,来与武sir的代码进行一个差异化的比较,记录之间的差距,改善以后写代码的思路 博客后台这个项目,对之前Django学习的各个知识点都有涉及到,非常重要 用户登录验 ...

  9. Python开发【Django】:中间件、CSRF

    CSRF 1.概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用 ...

  10. editplus的常用快捷键

    小编给大家整理了一些软件的快捷键.http://www.downza.cn/soft/187814.html 创建当前行的副本:Ctrl+J 反转选定文本的大小写:Ctrl+K 选择当前行:Ctrl+ ...