SpringBoot框架多配置文件的合并方法及系统技术方案

技术编号:37543630 阅读:8 留言:0更新日期:2023-05-12 16:13
本发明专利技术公开了SpringBoot框架多配置文件的合并方法及系统,属于SpringBoot框架应用技术领域,要解决的技术问题为如何将SpringBoot框架的多个配置文件进行有效地合并,生成格式清晰的配置文件。包括如下步骤:定义树的节点数据结构;对于每个配置文件,基于树的节点数据结构以及所述配置文件的缩进格式,解析配置文件构建一个与配置文件对应的树;虚拟一个根节点,将每个配置文件对应的树添加至所述虚拟根下,得到一个总体树;对于总体树,按照字母排序各层节点,得到总体配置树;基于树的节点数据结构以及所述配置文件的缩进格式,解析总体配置树得到一个yml格式的合并文件。配置树得到一个yml格式的合并文件。配置树得到一个yml格式的合并文件。

【技术实现步骤摘要】
SpringBoot框架多配置文件的合并方法及系统


[0001]本专利技术涉及SpringBoot框架应用
,具体地说是SpringBoot框架多配置文件的合并方法及系统。

技术介绍

[0002]SpringBoot是一个开发基于Spring框架的应用的快速开发框架,它也是SpringCloud构建微服务分布式系统的基础设施。
[0003]YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入,比如C/C++、Ruby、Python、Java、Perl、C#、PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。YML文件的扩展名可以使用.yml或者.yaml。
[0004]YML基本语法如下:
[0005]1)yml文件以缩进代表层级关系;
[0006]2)缩进不允许使用tab只能使用空格;
[0007]3)空格的个数不重要,只要相同层级的元素左对齐即可;
[0008]4)大小写敏感;
[0009]5)数据格式为,名称:(空格)值,即key:(空格)value。
[0010]形如:
[0011]server:
[0012]port:8090
[0013]servlet:
[0014]context

path:"/test"
[0015]spring:
[0016]application:
[0017]name:testapp
[0018]redis:
[0019]host:127.0.0.1
[0020]port:6379
[0021]如图1所示,使用SpringBoot框架进行开发时,如果为多模块项目常常会创建多个配置文件与之一一对应,这样结构清晰,方便好找,研发时往往通过添加启动参数来实现多配置文件生效,具体如下:
[0022]‑‑
spring.profiles.active=module1,module2,module3
[0023]在正式部署应用到服务器时,需要将各个配置文件中的配置按照生产环境的具体情况进行相应配置,之后有两种启动应用的方式:
[0024](1)保持多配置文件的方式
[0025]需要添加启动参数来实现多配置文件生效,具体如下:
[0026]‑‑
spring.profiles.active=module1,module2,module3
[0027]弊端:配置零散地分布到了不同的配置文件中,而且相同节点的子配置项没有归在一处,不利于集中管理和修改。
[0028](2)合并为一个配置文件的方式
[0029]需要比较各个文件的不同,在满足yml的格式要求的前提下手动合并为一个文件。
[0030]弊端:因需要人工比较,容易出错,耗时耗力。
[0031]若能将SpringBoot框架的多个配置文件进行有效地合并,将同级别配置项相邻展示,并在合并过程中对重复的配置项进行校验和介入处理,最终生成一份格式清晰的配置文件,既减少了人工操作,又降低了应用上线后的维护成本和难度。
[0032]如何将SpringBoot框架的多个配置文件进行有效地合并,生成格式清晰的配置文件,是需要解决的技术问题。

技术实现思路

[0033]本专利技术的技术任务是针对以上不足,提供SpringBoot框架多配置文件的合并方法及系统,来解决如何将SpringBoot框架的多个配置文件进行有效地合并,生成格式清晰的配置文件的技术问题。
[0034]第一方面,本专利技术一种SpringBoot框架多配置文件的合并方法,对于基于国产CPU和OS的SpringBoot框架,将所述SpringBoot框架的多个yml格式的配置文件进行合并,所述方法包括如下步骤:
[0035]定义树的节点数据结构,对于每个节点,key对应配置文件中冒号前的名称,value对应配置文件中冒号后的值,parent用于指向当前节点的上级节点;
[0036]对于每个配置文件,基于树的节点数据结构以及所述配置文件的缩进格式,解析所述配置文件构建一个于所述配置文件对应的树;
[0037]虚拟一个根节点作为虚拟根,将每个配置文件对应的树作为子树,将所述多个配置文件对应的子树添加至所述虚拟根下,得到一个总体树;
[0038]对于所述总体树,按照字母排序各层节点,得到总体配置树;
[0039]基于树的节点数据结构以及所述配置文件的缩进格式,解析所述总体配置树得到一个yml格式的合并文件,所述yml格式的合并文件作为多个配置文件的合并文件。
[0040]作为优选,基于树的节点数据结构以及所述配置文件的缩进格式,解析所述配置文件构建一个于所述配置文件对应的树,包括如下步骤:
[0041]逐行读取所述配置文件,依据配置文件的缩进格式,读取至冒号后有值的一行作为叶子节点;
[0042]逐行读取所述配置文件过程中,对于途径的行,将所述叶子节点的上一行作为上级节点,将所述上级节点作为当前上级节点,将所述当前上级节点的上一行作为当前上级节点的上级节点,依次对每个作为上级节点的行进行类推,直至没有上级节点,将没有上级节点的行作为根节点。
[0043]作为优选,将所述多个配置文件对应的子树添加至所述虚拟根下时,按照深度优先算法遍历各个子树,如果有同名节点则跳过并遍历下个节点,如果有同名叶子节点则说
明有重复配置项,则进行适配处理;
[0044]所述适配处理包括先加载优先生效、后续配置项舍弃。
[0045]作为优选,基于树的节点数据结构以及所述配置文件的缩进格式,按照深度优先算法遍历虚拟根节点下的各节点以及下级节点,输出key值,每向下一层增加空格缩进直到叶子节点在冒号后输出value值,最终输出符合要求的yml文件。
[0046]第二方面,本专利技术一种SpringBoot框架多配置文件的合并系统,其对于基于国产CPU和OS的SpringBoot框架,用于通过如第一方面任一项所述的方法将所述SpringBoot框架的多个yml格式的配置文件进行合并,所述系统包括:
[0047]树结构定义模块,所述树结构定义模块用于定义树的节点数据结构,对于每个节点,key对应配置文件中冒号前的名称,value对应配置文件中冒号后的值,parent用于指向当前节点的上级节点;
[0048]子树构建模块,对于每个配置文件,所述子树构建模块用于基于树的节点数据结构以及所述配置文件的缩进格式,解析所述配置文件构建一个于所述配置文件对应的树;
[0049]子树合并模块,所述子树合并模块用于虚拟一个根节点作为虚拟根,将每个配置文件对应的树作为子树,将所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种SpringBoot框架多配置文件的合并方法,其特征在于,对于基于国产CPU和OS的SpringBoot框架,将所述SpringBoot框架的多个yml格式的配置文件进行合并,所述方法包括如下步骤:定义树的节点数据结构,对于每个节点,key对应配置文件中冒号前的名称,value对应配置文件中冒号后的值,parent用于指向当前节点的上级节点;对于每个配置文件,基于树的节点数据结构以及所述配置文件的缩进格式,解析所述配置文件构建一个于所述配置文件对应的树;虚拟一个根节点作为虚拟根,将每个配置文件对应的树作为子树,将所述多个配置文件对应的子树添加至所述虚拟根下,得到一个总体树;对于所述总体树,按照字母排序各层节点,得到总体配置树;基于树的节点数据结构以及所述配置文件的缩进格式,解析所述总体配置树得到一个yml格式的合并文件,所述yml格式的合并文件作为多个配置文件的合并文件。2.根据权利要求1所述的SpringBoot框架多配置文件的合并方法,其特征在于,基于树的节点数据结构以及所述配置文件的缩进格式,解析所述配置文件构建一个于所述配置文件对应的树,包括如下步骤:逐行读取所述配置文件,依据配置文件的缩进格式,读取至冒号后有值的一行作为叶子节点;逐行读取所述配置文件过程中,对于途径的行,将所述叶子节点的上一行作为上级节点,将所述上级节点作为当前上级节点,将所述当前上级节点的上一行作为当前上级节点的上级节点,依次对每个作为上级节点的行进行类推,直至没有上级节点,将没有上级节点的行作为根节点。3.根据权利要求1所述的SpringBoot框架多配置文件的合并方法,其特征在于,将所述多个配置文件对应的子树添加至所述虚拟根下时,按照深度优先算法遍历各个子树,如果有同名节点则跳过并遍历下个节点,如果有同名叶子节点则说明有重复配置项,则进行适配处理;所述适配处理包括先加载优先生效、后续配置项舍弃。4.根据权利要求1所述的SpringBoot框架多配置文件的合并方法,其特征在于,基于树的节点数据结构以及所述配置文件的缩进格式,按照深度优先算法遍历虚拟根节点下的各节点以及下级节点,输出key值,每向下一层增加空格缩进直到叶子节点在冒号后输出value值,最终输出符合要求的yml文件。5.一种SpringBoot框架多配置文件的合并系统,其特征在于,对于基于国产CPU和OS的SpringBoot框架...

【专利技术属性】
技术研发人员:韩晓龙张海伦
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1