Spring Boot 3.3.0如何从文件读取数据库密码并设默认值
Spring Boot 3.3.0 从指定文件读取数据库密码配置
直接修改config.yaml中的password配置项即可实现需求,配置如下:
spring: datasource: appname: ${DOCUMENT_ID_DATABASE_APPNAME:DocumentIdService} driver-class-name: org.postgresql.Driver url: jdbc:postgresql:characterEncoding=UTF8&rewriteBatchedStatements=true username: ${DOCUMENT_ID_DATABASE_USERNAME:postgres} password: ${file:${DOCUMENT_ID_DATABASE_PASSWORD_FILE}::mypassword}
配置说明
${file:${DOCUMENT_ID_DATABASE_PASSWORD_FILE}::mypassword}是Spring Boot内置的表达式语法:file:前缀声明从文件读取内容${DOCUMENT_ID_DATABASE_PASSWORD_FILE}引用环境变量,获取密码文件的路径- 第一个空冒号表示:若环境变量
DOCUMENT_ID_DATABASE_PASSWORD_FILE不存在,直接使用后面的默认值 mypassword是兜底默认值,当环境变量不存在、文件不存在或文件读取失败时生效
注意事项
- Spring Boot 2.4及以上版本均支持该
file表达式语法,3.3.0完全兼容 - 若文件存在但无读取权限,Spring Boot启动会直接失败,这是安全设计的默认行为
- 若文件路径包含特殊字符(如空格),需用引号将路径包裹,或在环境变量中正确转义
内容的提问来源于stack exchange,提问作者rmf
相关产品推荐
相关产品推荐

