代码入口

//SpringApplication run 环境变量初始化入口
prepareEnvironment(listeners, bootstrapContext, applicationArguments)//prepareEnvironment 分步加载环境变量
private ConfigurableEnvironment prepareEnvironment(SpringApplicationRunListeners listeners,DefaultBootstrapContext bootstrapContext, ApplicationArguments applicationArguments) {//创建和初始化-环境变量对象ConfigurableEnvironment environment = getOrCreateEnvironment();configureEnvironment(environment, applicationArguments.getSourceArgs());ConfigurationPropertySources.attach(environment);listeners.environmentPrepared(bootstrapContext, environment);DefaultPropertiesPropertySource.moveToEnd(environment);configureAdditionalProfiles(environment);bindToSpringApplication(environment);if (!this.isCustomEnvironment) {environment = new EnvironmentConverter(getClassLoader()).convertEnvironmentIfNecessary(environment,deduceEnvironmentClass());}ConfigurationPropertySources.attach(environment);return environment;}

创建和初始化-环境变量对象

//根据应用类型不同,创建不同的环境变量对象
//环境变量的来源属性值来源不同,内部有许多(List)PropertySource,分别保存
private ConfigurableEnvironment getOrCreateEnvironment() {if (this.environment != null) {return this.environment;}switch (this.webApplicationType) {case SERVLET://web应用环境变量类型//加载systemProperties,systemEnvironment//加载servletConfigInitParams,servletContextInitParamsreturn new StandardServletEnvironment();case REACTIVE://响应应用环境变量类型return new StandardReactiveWebEnvironment();default://只是启动一个容器的应用//加载systemProperties,systemEnvironmentreturn new StandardEnvironment();}}1.StandardEnvironment加载一些系统环境变量参数即可
2.StandardServletEnvironment是一个web应用,自然还有一些web相关的环境变量参数

springboot环境变量(environment)加载源码分析相关推荐

  1. 插件式换肤框架搭建 - 资源加载源码分析

    资源加载源码分析 1.首先我们来看一下ImageView是如何加载资源的: public ImageView(Context context, @Nullable AttributeSet attrs ...

  2. spring boot实战(第十篇)Spring boot Bean加载源码分析

    前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...

  3. hanlp中文语言处理--词典加载源码过程分析及自定义用户词汇添加

    一.hanlp本地词典加载源码分析 hanlp在调用提供的函数处理文本时会先初始化本地词典,加载词典进入内存中 以中文分词接口为例子 1.调用分词函数入口 public class DemoAtFir ...

  4. uboot中环境变量的加载、写入过程详解

    1.uboot启动中环境变量的加载 1.1.uboot加载环境变量流程分析 (1)首先使用默认的环境变量default_environment[]: (2)然后加载SD卡中env分区的环境变量,校验读 ...

  5. Linux环境变量及其加载顺序

    Linux环境变量及其加载顺序 系统级 用户级 /etc/profile.d/*.sh >/etc/profile -> (~/.bash_profile | ~/.bash_login ...

  6. php 变量存活期,php 变量生命周期:PHP源码分析-PHP的生_php

    php的最多的两种运行模式是web模式.CLI模式. 无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行. 1.当我们在终端敲入php这个命令的时候,它使用的是CLI. 它就像一个web服务 ...

  7. Cocos Creator2.4.8 资源加载源码阅读

    最近用到资源加载的问题:加载的资源进度条倒退问题,现在只是用临时的解决方案 - 加载进度如果出现会倒退的问题还是用原来的数值.抽时间看了下cocos creator 资源加载的源码,整理了一下脑图 一 ...

  8. springboot全局常量_Spring-Boot配置属性和环境变量的加载顺序

    Spring-Boot使用很方便,创建系统时,您绝对需要将"设置"和"程序"分开,在Java中,有一个名为application.property/yaml的属 ...

  9. Kettle — Spoon加载源码解析

    在Kettle中,我们知道Spoon是其中最重要的一个组件.它可以让我们以图形化的方式开发转换和作业等工作. 在spoon中Kettle采用了Xul界面技术和Swt相结合的方式进行图形界面的开发. 启 ...

最新文章

  1. 【Android OpenGL ES】阅读hello-gl2代码(二)Java代码
  2. java中getinputstream_解析request.getInputStream()得到的流
  3. 利用PCHunter结束各种进程
  4. 二者取其一(初遇)_网络流
  5. python中的类及self详解_Python类class参数self原理解析
  6. 深度学习教程 TensorFlow and Deep Learning Tutorials
  7. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  8. 小问题: windows组件调用失败,无法加载安装安装程序:Wbemupgd.dll
  9. java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组
  10. java实验检查危险品代码_2019JAVA第六次实验报告
  11. C# WinForm开发系列 - 开篇
  12. sas 怎么连接mysql_sas连接MySQL
  13. prometheus使用cAdvisor监控容器
  14. 浅谈无线传感器和无线传感器网络
  15. PNP : Work Cound Frequence
  16. 【行列式2】n阶行列式的展开
  17. 用keil语言定义c51,51单片机Keil C51的使用(C语言)
  18. 卸载idea2020删除以前的配置_系统瘦身指南:卸载软件,看着简单,实际贼困难...
  19. 概念一: python 中列表 ,数组, 集合,字典;
  20. cacheput注解 用法_以注解的方式使用redis缓存得用法@CachePut , @CacheEvict, @Cacheable...

热门文章

  1. dnf游戏币比例计算机怎么算,DNF:游戏币比例降低到1比35,究竟是好还是坏?老司机说出了心声...
  2. python中demo函数_Python之函数
  3. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园二手交易系统aqj3i
  4. typeScript学习随笔(一)
  5. [ACNOI2022]穷尽吾生
  6. php 页面显示volist,thinkphp 中的volist标签在ajax操作中的特殊性
  7. 【英宝通Unity4.0公开课学习 】(三)脚本使用
  8. ​抗击新型冠状病毒,科技公司捐赠武汉排行榜名单
  9. 为什么路由器不用c语言,千古难题:路由器到底需不需要关闭?
  10. linux数组递增,shell 输入动态数组并遍历的简单例子