此篇博客用来记录本人遇到的 Could not resolve placeholder 问题
另外也欢迎各位留言,不断的对该问题进行完善
工作中经常遇到:Could not resolve placeholder ‘HOME’ in value “${HOME}” 这类的问题,
这里总结一下都有哪些解决方式
问题原因
出现这类问题的原因,大部分是在代码中使用了 @Value 注解,比如:
但是项目启动时却找不到对应的配置
解决方案
普通项目
普通项目都是用 application.properties 或 application.yml 作为配置文件,需要检查以下几项:
- 配置文件中是否存在对应的配置
- 如果是 yml 格式,需要仔细查看配置的格式是否正确
- 如果使用了 spring.profiles.active ,就要仔细检查使用的是哪个配置文件
集成Nacos
如果项目中使用了 Nacos,很多配置都会往上面迁移,这时需要注意以下几项:
- 默认情况下,Data ID 需要跟 spring.application.name 保持一致
- 检查 Group、Namespace等Nacos相关的配置,确定使用的是哪个配置文件
- 检查客户端的 log 日志,看是否有相关的异常信息输出。如果有,可以根据异常信息定位
本地环境变量
Spring Boot 项目启动时会加载本地操作系统的环境变量到 Environment
所以可以使用 Value 注解直接引用本地环境变量,比如:
本人曾经遇到一个问题,在 Mac 中能够启动项目,但是在 window 下却无法启动,就是因为HOME:
在 unix 中 HOME 是默认环境变量,所以在 Mac 启动可以启动
但是在 window 中默认没有 HOME 变量,所以。。。。。。。