运行源码分析:初始化ApplicationArguments( 三 )
> source = sources.get(name);CompositePropertySource composite = new CompositePropertySource(name);composite . addPropertySource (new SimpleCommandLinePropertySource("springApplicationCommandLineArgs", args));composite . addPropertySource(source);sources . replace(name, composite);t else//放置在第一位sources . addFirst(new SimpleCommandL inePropertySource(args));}}}这段代码需要重点看一下参数的优先级处理和默认参数 与命令参数之间的关系 。 首先 , 如果存在默认属性配置 , 则将默认属性配置放置在最后 , 也就是说优先级最低 。 然后 , 如果命令参数存在则会 出现两种情况:如果命令的参数 已经存在于属性配置中 , 则使用CompositePropertySource 类进行相同 name 的参数处理;如果命令的参数并不存在于属性配置中 , 则直接将其设置为优先级最高 。
ConfigurePropertySources 方法的官方注释也很好地解释了它的功能:增加、移除或重新排序应用环境中的任何 PropertySource 。
完成了 PropertySources 配置 , 随后通过 configureProfiles 方法来完成 Profiles 的配置 , 代码如下 。
protected void configureProfiles (ConfigurableEnvironment environment, String[] args)// 保 证 环 境 的 activeProfiles 属 性 被 初 始 化,如 果 未 初 始 化 该 方 法 会 对 其 初 始 化environment . getActiveProfiles();//如果存在的额外的 Profiles,则将其放置在第- -位 ,随后再获得其他的 ProfilesSetprofiles = new LinkedHashSet<>(this . additionalProfiles);profiles . addAll(Arrays. asList(environment . getActiveProfiles()));environment . setActiveProfiles(StringUtils . toStringArray(profiles));}
上面的代码主要用来处理应用环境中哪些配置文件处于激活状态或默认激活状态 。 对应的配置正是我们经常使用的用来区分不同环境的 spring.profiles.active 参数指定的值 。
文章插图
本文给大家讲解的内容是初始化ApplicationArguments、 ConfigurableEnvironment
- 下篇文章给大家讲解的是忽略信息配置、打印Banner、Spring应用上下文的创建;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
推荐阅读
- 分析师:iPhone 12任一机型头三月销量都将超越Galaxy S21产品线
- Git服务器配置错误导致日产汽车源码在网上泄露
- 分析师预测苹果新服务可能包括播客+股票+和 邮件+
- 发布|分析师:苹果将于2021年发布AirTags物品追踪器 新款Mac也有望面世
- Google AI建立了一个能够分析烘焙食谱的机器学习模型
- 灯塔市税务局首个5G智慧办税厅开始试运行
- Axiomtek推出AIE100-903-FL-NX AI Edge系统 可在恶劣环境下运行
- 专家介绍如何判断智能手机被入侵:运行速度变慢、电池消耗过快以及卡顿
- 怎样提高苹果6的运行速度?有这些问题就别救了,你用了几年了?
- 微软推实用磁盘工具DiskSpace 帮用户分析文件占用空间