Rapidoid自定义config-develop.yml失效及配置规则咨询
Rapidoid 5.5.5 配置问题解答
1. 多config-*.yml文件的合并规则
Rapidoid加载配置时遵循以下合并逻辑:
- 优先级顺序:环境特定配置文件(如
config-develop.yml)> 通用配置文件(config.yml)> 框架内置默认配置 - 配置项处理:高优先级文件的同层级配置项会直接覆盖低优先级的;嵌套配置节点会进行深度合并,而非完全替换整个节点
- 加载顺序:先加载框架内置的默认配置,再加载类路径下的通用
config.yml,最后加载匹配当前运行环境的特定配置文件
2. 忽略部分配置文件
有两种可靠方式实现:
- 构建工具过滤:以Maven为例,在
pom.xml中添加资源过滤规则,排除不需要的配置文件:<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>config-unwanted.yml</exclude> </excludes> </resource> </resources> </build> - 启动参数限定:启动应用时添加JVM参数
-Drapidoid.config.files=需要加载的文件1.yml,需要加载的文件2.yml,仅加载列表内的配置文件,未指定的会被忽略
3. 指定明确的配置文件名
支持两种指定方式:
- JVM启动参数:添加
-Drapidoid.config.file=config-develop.yml,强制加载该指定文件 - 代码手动加载:在应用启动类中通过API指定:
import org.rapidoid.config.Config; import org.rapidoid.config.Conf; public class App { public static void main(String[] args) { Config.fromYaml("config-develop.yml").apply(); // 启动Rapidoid服务的代码 } }
针对你当前配置未生效的补充排查点
你的自定义config-develop.yml未生效,大概率是环境标识不匹配:Rapidoid默认运行环境为prod,只会加载config-prod.yml或通用config.yml。需要启动时添加参数-Drapidoid.env=develop,让框架匹配你的config-develop.yml;同时确认该文件已被Maven正确打包到/target/classes目录下。
内容的提问来源于stack exchange,提问作者Nick S
相关产品推荐
相关产品推荐

