当前位置: 首页 > news >正文

网站是做流程手机百度免费下载

网站是做流程,手机百度免费下载,无锡做网站选优易信,石家庄招聘哪个网站做的好文章目录 一、介绍二、启动环境Environment的分析三、进入源码四、创建环境1. 如何确定应用类型2. 测试 一、介绍 在springboot的启动流程中,启动环境Environment是可以说是除了应用上下文ApplicationContext之外最重要的一个组件了,而且启动环境为应用…

文章目录

  • 一、介绍
  • 二、启动环境Environment的分析
  • 三、进入源码
  • 四、创建环境
    • 1. 如何确定应用类型
    • 2. 测试

一、介绍

在springboot的启动流程中,启动环境Environment可以说是除了应用上下文ApplicationContext之外最重要的一个组件了,而且启动环境为应用上下文提供了最基本的前提基础。

在启动环境中,主要保存大量配置信息和当前操作系统的配置信息以及环境变量。

对于它的重要性,我们可以这样理解:启动环境为创建应用上下文提供了基础支持,而应用上下文为我们开发springboot项目提供了基础支持。

本文基于以下版本进行展开:

  • jdk:1.8
  • springboot:2.4.3

另外:由于篇幅过长,决定分四集文章来讲解分析

一、springboot创建并配置环境(一) - 创建环境

二、springboot创建并配置环境(二) - 配置基础环境

三、springboot创建并配置环境(三) - 配置扩展属性(上集)

四、springboot创建并配置环境(四) - 配置扩展属性(下集)

二、启动环境Environment的分析

老规矩,在了解一个类之前,我们需要先通过其UML图对该类的功能有一个大致的了解,下面是启动环境Environment的UML图:

在这里插入图片描述

  • PropertyResolver:顾名思义为属性解析器,提供用来解析并保存形如key=value这样的属性。

  • Environment:在PropertyResolver的基础上添加了对profile的支持,其实profile也是形如key=value的属性配置,只是为了更清晰就把它做成独立的api了。

  • ConfigurablePropertyResolver可配置的属性解析器。在PropertyResolver的基础上添加了类型转换器ConversionService

  • ConfigurableEnvironment可配置的环境,即启动环境。本片文章主要就是围绕它来展开的。它对Environment做出了扩展,允许动态设置profile。并对其内部保存的属性集合进行分类,如:操作系统的属性、操作系统的环境变量。

  • ConfigurableWebEnvironment:在ConfigurableEnvironment的基础上添加了对servlet类型的web环境的支持。

  • ConfigurableReactiveWebEnvironment:在ConfigurableEnvironment的基础上添加了对响应式类型的web环境的支持。

从上图中不难看出,springboot为我们提供了三种启动环境

  • StandardEnvironment标准环境。提供基本的springboot启动环境。
  • StandardServletEnvironmentservlet类型的web环境。在标准环境的基础上,添加了对servlet类型的web环境的环境处理。
  • StandardReactiveWebEnvironment响应式类型的web环境。在标准环境的基础上,添加了对响应式类型的web环境的环境处理。

三、进入源码

在springboot启动流程的源码中,我们不难发现,启动环境的创建和配置是在一个prepareEnvironment()方法中完成的,如下所示:

在这里插入图片描述

进入该方法查看其实现逻辑:

在这里插入图片描述

本文主要围绕prepareEnvironment()方法探讨springboot是如何创建运行环境并对其进行配置的。

下面进入正题。

四、创建环境

prepareEnvironment()方法中,getOrCreateEnvironment()方法负责实例化环境对象,并将创建好的环境返回。所以我们需要进入该方法:

在这里插入图片描述

该方法很简单,就是根据当前应用类型去实例化对应的环境对象

  • 如果是servlet类型的web环境,则实例化一个StandardServletEnvironment对象
  • 如果是响应式类型的web环境,则实例化一个StandardReactiveWebEnvironment对象
  • 如果以上两种web环境都不是,则默认实例化一个标准环境对象StandardEnvironment

但是,springboot是如何知道我们当前应用是哪一种类型呢?即webAppliicationType是如何确定的?

1. 如何确定应用类型

当我们在springboot的主启动类中使用SpringApplicaton.run()启动项目时,其内部其实是先创建一个SpringApplicaton实例,然后对该实例调用其run()方法,如下图所示

在这里插入图片描述

在创建SpringApplicaton实例时,该构造方法内部确定当前应用程序类型并将该类型保存到webApplicationType属性中,如下图所示

在这里插入图片描述

从该行代码可以看出,springboot通过调用WebApplicationType的静态方法deduceFromClasspath()推断出当前应用程序类型

我们再进入该静态方法来了解它是如何推断的

在这里插入图片描述

从该方法中看到,推断过程无非就是从类路径中判断是否存在指定的类

  • 如果类路径中存在servlet相关的类,那么当前应用程序就是servlet类型的应用程序
  • 如果类路径中仅存在reactive相关的类,那么当前应用程序就是响应式类型的应用程序
  • 如果以上两种类都不存在,那么当前应用程序就什么类型的应用程序都不是了。

判断类路径中判断是否存在指定的类只需要调用ClassUtils的静态方法isPresent()就行了。而在该静态方法中,则是通过对传入的类进行反射去实例化,如果实例化失败并抛出了异常,则说明该类是不存在的。

2. 测试

  • 既不存在reactive相关的类,也不存在servlet相关的类

    在pom中我们仅仅引入springboot的依赖

    在这里插入图片描述

    然后启动项目进入断点,查看当前应用程序的类型,确定为NONE类型的应用程序

    在这里插入图片描述

  • 仅存在reactive相关的类

    在pom中我们引入springboot的依赖 和 reactive相关的依赖

    在这里插入图片描述

    然后启动项目进入断点,查看当前应用程序的类型,确定为响应式类型的应用程序

    在这里插入图片描述

  • 存在servlet相关的类

    在pom中我们引入springboot的依赖 和 servlet相关的依赖

    在这里插入图片描述

    然后启动项目进入断点,查看当前应用程序的类型,确定为servlet类型的应用程序

    在这里插入图片描述

点此进入下一集:springboot创建并配置环境(二) - 配置基础环境



纸上得来终觉浅,绝知此事要躬行。

————————我是万万岁,我们下期再见————————

http://www.khdw.cn/news/11429.html

相关文章:

  • 上海seo网站优化软件seo资源咨询
  • storyset自定义插画网站2021年中国关键词
  • 网站栏目做ip地址访问限制软文平台
  • 有什么网站可以帮人做模具吗微商营销
  • 做设计有哪些免费网站seo泛目录培训
  • 前端旅游网站行程怎么做网址关键词查询网站
  • wordpress目录内容分页显示太原seo代理商
  • 对网站建设的建议可以放友情链接的网站
  • 宁波易企网做的网站建网站教学
  • 装修公司怎么做网站推广头条新闻今日头条官方版本
  • 做网站文字大小qq推广软件
  • 外链建设对网站的影响seo搜索引擎优化
  • 连云港百度推广网站建设网络营销的发展概述
  • 不良网站进入窗口软件下载7seo的课谁讲的好
  • 网站的建设框架哈尔滨最新今日头条新闻
  • 网站设计思想国内专业的seo机构
  • 公司网站建设沈阳泸州网站seo
  • 长宁区网站建设公网站开发流程的8个步骤
  • 刷单网站搭建seo搜索引擎优化工资薪酬
  • 如何用一个域名做多个网站专业的网页制作公司
  • 有没有做美食的网站优化排名软件
  • 河南网站建站系统平台必应搜索引擎国际版
  • 网站建设行业现状中国教师教育培训网
  • 制作微信小程序怎么赚钱郑州百度快照优化排名
  • 西宁网站建设加q479185700如何介绍自己设计的网页
  • 饿了吗网站如何做手机app软件开发
  • 广东品牌网站设计苏州seo招聘
  • 局域网内用自己电脑做网站国产长尾关键词拘挖掘
  • 网上帮人做网站2023最近的新闻大事10条
  • 哪个公司做网站最好深圳百家联盟推广部电话多少