配置体系 (Configuration)
配置体系模块,是通过简单的目录结构实现在项目开发以及维护过程中,对配置文件等各种资源的统一管理,为模块化开发和部署提供灵活的、简单有效的解决方案。
Maven包依赖
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-configuration</artifactId>
<version>2.1.4-dev</version>
</dependency>
特点
- 从开发角度规范了模块化开发流程、统一资源文件的生命周期管理;
- 从可维护角度将全部资源集成在整个体系中,具备有效的资源重用和灵活的系统集成构建、部署和数据备份与迁移等优势;
- 简单的配置文件检索、加载及管理模式;
- 模块间资源共享,模块(modules)可以共用所属项目(projects)的配置、类和包等资源文件;
- 默认支持对 XML、Properties 和 JSON 配置文件的解析,可以通过 IConfigurationProvider 接口自定义文件格式,支持缓存,避免重复加载;
- 配置对象支持 @Configuration 注解方式声明,无需编码即可自动加载并填充配置内容到类对象;
- 修改配置文件无需重启服务,支持自动重新加载;
- 集成模块的构建(编译)与分发、服务的启动与停止,以及清晰的资源文件分类结构可快速定位;
配置体系目录结构
按优先级由低到高的顺序依次是:全局(configHome)> 项目(projects)> 模块(modules):
CONFIG_HOME\
|--bin\
|--cfgs\
|--classes\
|--dist\
|--lib\
|--logs\
|--plugins\
|--projects\
| |--<project_xxx>
| | |--cfgs\
| | |--classes\
| | |--lib\
| | |--logs\
| | |--modules\
| | | |--<module_xxx>
| | | | |--cfgs\
| | | | |--classes\
| | | | |--lib\
| | | | |--logs\
| | | | |--plugins\
| | | | |--<......>
| | | |--<......>
| | |--plugins\
| |--<......>
|--temp\
|--......
模块配置
配置文件参数说明
#-------------------------------------
# 配置体系模块初始化参数
#-------------------------------------
# 配置体系根路径, 必须绝对路径, 前缀支持${root} ${user.home}和${user.dir}变量, 默认值: ${root}
ymp.configs.configuration.config_home=${user.dir}
# 项目名称, 做为根路径下级子目录, 对现实项目起分类作用, 默认值: 空
ymp.configs.configuration.project_name=
# 模块名称, 此模块一般指现实项目中分拆的若干个子项目的名称, 默认为空
ymp.configs.configuration.module_name=
# 配置文件存放的基准目录名称,不允许以'/'开头但必须以'/'结束,默认值为空
ymp.configs.configuration.config_base_dir=
# 配置文件检查时间间隔(毫秒), 默认值为0表示不开启
ymp.configs.configuration.config_check_time_interval=
# 指定配置体系下的默认配置文件分析器, 默认值: net.ymate.platform.configuration.impl.DefaultConfigurationProvider
ymp.configs.configuration.provider_class=
注意:
配置体系根路径 config_home 配置项参数,可以通过 JVM 启动参数方式进行配置,这种方式将优先于配置文件,如:
java -jar -Dymp.configHome=...
若配置项参数和JVM启动参数均未设置时,将尝试加载 YMP_CONFIG_HOME 环境变量,若环境变量也不存在,则使用默认值:${root}