Foxnic-Web —— 参数体系

LeeFJ
• 阅读 388
Foxnic-Web —— 参数体系
概述

  所谓参数即程序在运行时可以或得到的一些基础环境或相关的配置信息。这些信息来自各个不同的地方,有系统参数、程序的启动参数,程序的 YML 配置文件参数以及系统本身在数据库配置表的配置参数。这些参数信息通过程序相互协同,使系统在不同是实施场景有不同的表现。

  本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。

系统参数

  系统参数即通过 System.getProperties() 方法可以获得的参数清单,此处不作展开。Foxnic-Web 的应用会在启动时输出这些系统参数:

Foxnic-Web —— 参数体系

启动参数

  启动参数是指通过启动命令向 SpringBoot 应用传入的参数,他们被 main 函数的参数接收并处理。如图,设置两个参数 name=LeeFJ city=NingBo :

Foxnic-Web —— 参数体系

  当应用启动时,我们可以看到参数输出:

Foxnic-Web —— 参数体系

  在程序中可以通过 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 版本开始使用新的维护界面,如图所示:

Foxnic-Web —— 参数体系

  系统参数的取值通过 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/lank/eam

  https://gitee.com/LeeFJ/foxnic-samples

官方文档

  http://foxnicweb.com/docs/doc.html

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
Java内嵌Groovy脚本引擎进行业务规则剥离(一)
一些常见商业应用程序或企业应用,大多都会遇上业务规则在一定的条件下,允许进行一些灵活的配置,以满足业务变化的需要。解决的方式大致有以下几个方面:1.最为传统的方式是java程序直接写死提供几个可调节的参数配置然后封装成为独立的业务模块组件,在增加参数或简单调整规则后,重新调上线。2.最为彻底的解决方式,引入商业化规则引擎,如iLog,国产的“
Wesley13 Wesley13
3年前
MySQL超时参数以及相关DataX数据同步案例分享
一、背景MySQL系统变量提供关于服务器的一些配置和能力信息,大部分变量可在mysqld服务进程启动时设置,部分变量可在mysqld服务进程运行时设置。合理的系统变量设值范围,是保障MySQL稳定提供服务的重要因素。本文主要描述MySQL数据库的超时timeout相关的一些系统变量,部分参数同程序应用中常见到的CommunicationsEx
Wesley13 Wesley13
3年前
API与API管理
什么是APIAPI全称为应用程序编程接口,通俗来讲就是不需要访问程序的源代码,也不需要理解程序实现的方式,只需要通过访问相应接口的URL并填写需要获得的数据的参数名,来获取需要的参数信息。一个接口可以是一个简单的应用程序,例如天气预报、快递查询、手机归属地查询等等,这些都可以是接口,并且可以直接填写参数取值。!(https://os
Easter79 Easter79
3年前
Typescript 常见的几种函数重载方法详解与应用示例
所谓的重载,其实就是使用相同的函数名,传入不同数量的参数或不同类型的参数,以此创建出多个方法或产生不同结果。1\.最常见的,也就是根据定义傻瓜式地判断参数类型与数量functionshowPerson(name,...others){console.log(name,others)}
Easter79 Easter79
3年前
SpringCloud微服务(06):Config组件,实现配置统一管理
一、Config简介在微服务系统中,服务较多,相同的配置:如数据库信息、缓存、参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置。springcloud提供配置中心,来解决这个场景问题。系统中的通用配置存储在相同的地址:GitHub,Gitee,本地配置服务等,然后配置中心读取配置以restful发布
Stella981 Stella981
3年前
Docker在服务器重启后自动运行
导读CoreOS服务器有时会系统自动升级,在系统重启后,如何将部署的程序也自动随时系统启动呢?还有Etcd和Flannel。1、设置Flannel的Unit文件,在Etcd服务启动后启动;把相关配置工作放到Unit文件中,如添加ExecStartPost参数UnitDescriptionflannelAfterdocke
Wesley13 Wesley13
3年前
mysql在LINUX和WINDOWS系统下设置表名不区分大小写
1.在LINUX系统下,表的名称是区分大小写的,而在WINDOWS环境下,表名不区分大小写;2.设置表名不区分大小写:WINDOWS环境下,修改mysql安装目录下的my.ini配置文件,在【mysqld】下添加lower\_case\_table\_names的参数,将参数值设置为0区分大小写,设置为1不区分大小写
Wesley13 Wesley13
3年前
ABB机器人 带参数例行程序
1、带参数例行程序概念ABB机器人在建立程序时候,可以把程序建立为三类,分别是普通程序(Procedures)、功能程序(functions)和中断程序(trap)。带参数例行程序属于普通程序,即在编写例行程序时,可以附带参数。2、带参数理性程序使用说明(1)带参数例行程序的参数个数,可以有多个参数,参数的数据类型可以不相同。(2)带参数例行
Stella981 Stella981
3年前
JVM参数表
JavaHotSpotVM中\XX:的可配置参数列表进行描述;这些参数可以被松散的聚合成三类:行为参数(BehavioralOptions):用于改变jvm的一些基础行为;性能调优(PerformanceTuning):用于jvm的性能调优;调试参数(DebuggingOptions):一般用
Stella981 Stella981
3年前
JVM优化之
XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。\Xms堆内存的最小大小,默认为物理内存的1/64\Xmx堆内存的最大大小,默认为物理内存的1/4\Xmn堆内新生代的大小。通过这个值也可以得到老