Foxnic-Web —— 参数体系
概述
所谓参数即程序在运行时可以或得到的一些基础环境或相关的配置信息。这些信息来自各个不同的地方,有系统参数、程序的启动参数,程序的 YML 配置文件参数以及系统本身在数据库配置表的配置参数。这些参数信息通过程序相互协同,使系统在不同是实施场景有不同的表现。
本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。
系统参数
系统参数即通过 System.getProperties() 方法可以获得的参数清单,此处不作展开。Foxnic-Web 的应用会在启动时输出这些系统参数:
启动参数
启动参数是指通过启动命令向 SpringBoot 应用传入的参数,他们被 main 函数的参数接收并处理。如图,设置两个参数 name=LeeFJ city=NingBo :
当应用启动时,我们可以看到参数输出:
在程序中可以通过 BootArgs.getArg("name") 方法获得参数值。另外,值得一提的是,通过 -D 传入的命令行参数可以通过 System.getProperties() 获得。
文件参数
YML 参数即在 application.yml 或 application.properties 中配置的参数,这些参数可以通过 @Value 注解获取。在 Foxnic-Web 的应用中也可以通过 SpringUtil.getEnvProperty() 或其它类似的方法获取值。
Profile 参数
系统参数是 Foxnic-Web 所特有的参数,这些参数存放在数据库的表中。Foxnic-Web 将一组树形参数称之为 Profile,其中默认的 Profile 作为基础 Profile,不同的 Pofile 之间可以相互叠加使用。Profile 的叠加方式由 YML 文件中的 foxnic.config.profiles 配置项决定。
Profile 的维护界面从 Foxnic-Web 1.7 版本开始使用新的维护界面,如图所示:
系统参数的取值通过 SystemConfigProxyUtil 类提供的方法即可,另外,基于Foxnic-Web 代码生成的特性,这些配置好的系统参数可以生成枚举类,方便在开发时使用。
Foxnic-Web 引入多 Profile 系统参数的好处显而易见,主要包括:
- 系统参数时跟随数据库的,不同的环境可以有不同的配置,例如 sit 与 uat 环境可以使用不同的参数。
- 因为系统参数是在数据库内的,他的修改比较方便,而且可以即时生效,无需重启。
- 因为 Profile 是可以叠加覆盖的,所以不同的场合可以有不同的组合,设置每个开发人员都可以使用不同的 Profile 避免相互干扰。
- Foxnic-Web 专门为系统参数的管理提供了方便的管理界面,便于大量参数的管理。
小结
本节从几个方面介绍了 Foxnic-Web 应用中参数的传入以及取值的方法。我想,在大多数的二开场景都会用到本文中提到的这些参数,希望对大家的二开有所助益。
相关项目
https://gitee.com/LeeFJ/foxnic
https://gitee.com/LeeFJ/foxnic-web
https://gitee.com/LeeFJ/foxnic-samples