Play框架中如何管理application.config以减少冗余配置代码
Play框架application.conf配置复用实现方案
Play框架的配置文件默认采用HOCON格式,原生支持变量引用、字符串拼接能力,你需要的公共配置复用功能可以直接通过HOCON的语法规则实现,无需额外改造:
具体实现规则
- 顶层定义公共配置项:把多个数据库共用的地址前缀、账号密码、驱动等字段定义为配置文件的顶层变量
- 子配置引用变量:使用
${变量名}语法在子配置块中引用公共变量 - 字符串拼接:直接把变量引用和固定字符串相邻书写即可自动完成拼接,不需要额外添加
+号
正确的配置示例
# 公共配置项 dbUrl = "jdbc:mysql://localhost/" dbUser = "user" dbPass = "pass" slickDriver = scala.slick.driver.MySQLDriver # 业务库1配置 storedb { url = ${dbUrl}"storedb" slick.driver = ${slickDriver} user = ${dbUser} pass = ${dbPass} } # 业务库2配置,直接复用公共配置 orderdb { url = ${dbUrl}"orderdb" slick.driver = ${slickDriver} user = ${dbUser} pass = ${dbPass} }
可选优化建议
如果公共配置项较多,可以把公共字段统一收拢到同一个配置对象下,避免顶层变量过多混乱:
common { dbUrl = "jdbc:mysql://localhost/" dbUser = "user" dbPass = "pass" slickDriver = scala.slick.driver.MySQLDriver } storedb { url = ${common.dbUrl}"storedb" slick.driver = ${common.slickDriver} user = ${common.dbUser} pass = ${common.dbPass} }
如果需要支持运行时通过环境变量覆盖配置,可以添加 fallback 规则:
common { dbUser = "defaultUser" dbUser = ${?DB_USER} # 存在DB_USER环境变量时优先使用环境变量值 }
内容的提问来源于stack exchange,提问作者Himal Regmi
相关产品推荐
相关产品推荐

