美洲杯外围下注_美洲杯投注导航_[所有网址]

美洲杯外围下注_美洲杯投注导航_[所有网址]是该公司为打造信誉第一,2014最新体验金,美洲杯外围下注_美洲杯投注导航_[所有网址]这里的所有老虎机游戏及真人百家乐游戏都具有欧洲风格,致力成为最具传播力和互动性的娱乐城网站。

Spring Boot 运作原理

2019-05-29 16:34 来源:未知

["

美洲杯竞猜网址 1Profile

Spring Boot 运作原理

n 美洲杯竞猜网址 2n

本文共 946字,阅读大约需要 3分钟 !

1、Spring Boot 简介

n

说到接触 SpringBoot 伊始,给我第一映像最深的是有两个关键元素:

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot并不是要成为Spring平台里面众多“Foundation”层项目的替代者。SpringBoot的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。

n 本文共 946字,阅读大约需要 3分钟 !n

美洲杯竞猜网址 3SpringBoot 的两个关键元素

SpringBoot是伴随着Spring4.0诞生的;

n

对照上面的典型代码,这个两个元素分别是:

从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;

n 概述n

n

n 说到接触 SpringBoot 伊始,给我第一映像最深的是有两个关键元素:n

n

n 美洲杯竞猜网址 4n

n

n 对照上面的典型n n 代码nn ,这个两个元素分别是:n

n

  • n n @SpringBootn n Appnn lin n catnn ionn n
  • n n SpringApplicationn n 以及n n run()n n 方法n

n

n 关于n n @SpringBootApplicationn n 注解的剖析已经在上文: 《SpringBoot 中 @SpringBootApplication注解背后的三体结构探秘》 中完成了,其实它背后就是一个三体结构,只是 SpringBoot给了其一个包装而已。那么本文我们就来看看这个n n SpringApplicationn n 以及n n run()n n 方法 到底是个什么鬼,它背后又隐藏了哪些奥秘呢?n

n

n 注:本文首发于n n My Personal Blogn n ,欢迎光临n n 小站n n

n

n 本文内容脑图如下:n

n

n 美洲杯竞猜网址 5n

n

  • @SpringBootApplication
  • SpringApplication 以及 run() 方法

SpringBoot帮助开发者快速启动一个Web容器;

n SpringApplication 惊鸿一瞥n

n

n SpringApplication 这个类应该算是 SpringBoot 框架 的“创新”产物了,原始的 Spring中并没有这个类,SpringApplication 里面封装了一套 Spring 应用的启动流程,然而这对用户完全透明,因此我们上手 SpringBoot 时感觉简洁、轻量。n

n

n 一般来说默认的 SpringApplication 执行流程已经可以满足大部分n n 需求nn ,但是 若用户想干预这个过程,则可以通过 SpringApplication 在流程某些地方开启的n n 扩展点n n 来完成对流程的扩展,典型的扩展方案那就是使用 set 方法。n

n

n 我们来举一个栗子,把我们天天司空见惯的 SpringBoot 应用的启动类来拆解一下写出来:n

n

@SpringBootApplicationnpublic class CodeSheepApplication {n public static void main( String[] args ) {n  // SpringApplication.run( CodeSheepApplication.class args ); // 这是传统SpringBoot应用的启动,一行代码搞定,内部默认做了很多事n  SpringApplication app = new SpringApplication( CodeSheepApplication.class );n  app.setXXX( ... ); // 用户自定的扩展在此 !!!n  app.run( args );n }n}

n

n 这样一拆解后我们发现,我们也需要先构造 SpringApplication 类对象,然后调用该对象的n n run()nn 方法。那么接下来就讲讲 SpringApplication 的构造过程 以及其n n run()nn 方法的流程,搞清楚了这个,那么也就搞清楚了SpringBoot应用是如何运行起来的!n

n

关于 @SpringBootApplication 注解的剖析已经在上文:《SpringBoot 中 @SpringBootApplication注解背后的三体结构探秘》 中完成了,其实它背后就是一个三体结构,只是 SpringBoot给了其一个包装而已。那么本文我们就来看看这个 SpringApplication 以及 run() 方法 到底是个什么鬼,它背后又隐藏了哪些奥秘呢?

SpringBoot继承了原有Spring框架的优秀基因;

n SpringApplicationn n 实例nn 的初始化n

n

n 我们对照代码来看:n

n

n 美洲杯竞猜网址 6n

n

n 四个关键的步骤已标注在图中,分别解释如下:n

n

  • n n ①n n 推断应用的类型:创建的是 REACTIVE应用、SERVLET应用、NONE 三种中的某一种n

n

n 美洲杯竞猜网址 7n

n

  • n n ②n n 使用n n SpringFactoriesLoadernn 查找并加载n n classpathnn 下n n META-INF/n n springn n .factoriesnn 文件中所有可用的n n ApplicationContextInitializernn

n

n 美洲杯竞猜网址 8n

n

  • n n ③n n 使用n n SpringFactoriesLoadernn 查找并加载 classpath下n n META-INF/spring.factoriesnn 文件中的所有可用的n n ApplicationListenernn

n

n 美洲杯竞猜网址 9n

n

  • n n ④n n 推断并设置 main方法的定义类n

n

n 美洲杯竞猜网址 10n

n

注: 本文首发于 My Personal Blog,欢迎光临 小站

SpringBoot简化了使用Spring的过程。

n SpringApplication 的run()方法探秘n

n

n 先看看代码长啥样子:n

n

n 美洲杯竞猜网址 11n

n

n 各个主要步骤我已经标注在上图之中了,除此之外,我也按照自己的理解画了一个流程图如下所示,可以对照数字标示看一下:n

n

n 美洲杯竞猜网址 12n

n

n 我们将各步骤n n 总结nn 精炼如下:n

n

  1. n

    n 通过n n SpringFactoriesLoadernn 加载n n META-INF/spring.factoriesnn 文件,获取并创建n n SpringApplicationRunListenernn 对象n

    n

  2. n

    n 然后由n n SpringApplicationRunListenernn 来发出 sn n tarnn ting 消息n

    n

  3. n

    n 创建n n 参数nn ,并n n 配置nn 当前 SpringBoot 应用将要使用的 Environmentn

    n

  4. n

    n 完成之后,依然由n n SpringApplicationRunListenernn 来发出 environmentPrepared 消息n

    n

  5. n

    n 创建n n ApplicationContextnn

    n

  6. n

    n 初始化n n ApplicationContextnn ,并设置 Environment,加载相关配置等n

    n

  7. n

    n 由n n SpringApplicationRunListenernn 来发出n n contextPreparednn 消息,告知SpringBoot 应用使用的n n ApplicationContextnn 已准备OKn

    n

  8. n

    n 将各种n n beannn s 装载入n n ApplicationContextnn ,继续由n n SpringApplicationRunListenernn 来发出 contextLoaded 消息,告知 SpringBoot 应用使用的n n ApplicationContextnn 已装填OKn

    n

  9. n

    n refresh ApplicationContext,完成IoC容器可用的最后一步n

    n

  10. n

    n 由n n SpringApplicationRunListenernn 来发出 started 消息n

    n

  11. n

    n 完成最终的程序的启动n

    n

  12. n

    n 由n n SpringApplicationRunListenernn 来发出 running 消息,告知程序已运行起来了n

    n

n

n 至此,全流程结束!n

n

本文内容脑图如下:

Spring由于其繁琐的配置,一度被人认为“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。

美洲杯竞猜网址,n 后记n

n

n 由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!n

","原文地址:原 荐 SpringBoot 应用程序启动过程探秘, 感谢原作者分享。"]

美洲杯竞猜网址 13本文内容脑图

Spring Boot更多的是采用Java Config的方式,对Spring进行配置。

SpringApplication 这个类应该算是 SpringBoot 框架 的“创新”产物了,原始的 Spring中并没有这个类,SpringApplication 里面封装了一套 Spring 应用的启动流程,然而这对用户完全透明,因此我们上手 SpringBoot 时感觉简洁、轻量。

SpringBoot主要有如下核心特点:
  包含执行所需的一切的可执行jar包。包含了运行所需的一切,包括内嵌应用服务器等,并打包为一个可执行jar文件部署,这点在微服务概念里非常重要。

一般来说默认的 SpringApplication 执行流程已经可以满足大部分需求,但是 若用户想干预这个过程,则可以通过 SpringApplication 在流程某些地方开启的 扩展点 来完成对流程的扩展,典型的扩展方案那就是使用 set 方法。

约定大于配置理念的完美践行,自动配置模块

我们来举一个栗子,把我们天天司空见惯的 SpringBoot 应用的启动类来拆解一下写出来:

提供各种各样的starter简化初始配置过程

@SpringBootApplicationpublic class CodeSheepApplication { public static void main( String[] args ) { // SpringApplication.run( CodeSheepApplication.class args ); // 这是传统SpringBoot应用的启动,一行代码搞定,内部默认做了很多事 SpringApplication app = new SpringApplication( CodeSheepApplication.class ); app.setXXX; // 用户自定的扩展在此 !!! app.run; }}

提供各种扩展机制等等

这样一拆解后我们发现,我们也需要先构造 SpringApplication 类对象,然后调用该对象的 run() 方法。那么接下来就讲讲 SpringApplication 的构造过程 以及其 run() 方法的流程,搞清楚了这个,那么也就搞清楚了SpringBoot应用是如何运行起来的!

2、简单搭建SpringBoot

我们对照代码来看:

环境:

美洲杯竞猜网址 14SpringApplication 实例的初始化代码

  1、IDEA

四个关键的步骤已标注在图中,分别解释如下:

  2、JDK 10

  • 推断应用的类型:创建的是 REACTIVE应用、SERVLET应用、NONE 三种中的某一种

1、创建项目

美洲杯竞猜网址 15推断应用的类型

美洲杯竞猜网址 16

  • 使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中所有可用的 ApplicationContextInitializer

2、设置项目信息(比如jdk、打包

美洲杯竞猜网址 17ApplicationContextInitializer 加载

美洲杯竞猜网址 18

  • 使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中的所有可用的 ApplicationListener

3、设置关联框架

美洲杯竞猜网址 19ApplicationListener 加载

美洲杯竞猜网址 20

  • 推断并设置 main方法的定义类

4、设置项目名字及工作目录

TAG标签:
版权声明:本文由美洲杯外围下注发布于系统,转载请注明出处:Spring Boot 运作原理