Could not resolve placeholder error

当SpringBoot启动遇到'Could not resolve placeholder'错误,通常是因为缺少YML配置中的变量。除了检查YML文件,本文还探讨了一种特殊场景:在XML中使用YML变量导致的问题。通过断点调试PropertySourceLoader接口的实现类,尤其是YamlPropertySourceLoader,可以确定配置是否正确加载。同时,介绍了YML加载顺序,先加载bootstrap.yml,再加载application.yml,以及它们在配置中的角色。最后,提到了解析YML的库snakeyaml已集成在Spring Boot框架内。
摘要由CSDN通过智能技术生成

springboot启动失败,报错“Could not resolve placeholder "xxx” in value "${zzz}"。这种问题一看就是加载不到变量zzz,需要查一下yml文件中是否配置了该变量。如果有,再去编译好的文件target/classes目录下的看看yml文件中是否配置了该变量。

我要说的是另外一种情况,由于引入了三方件,我需要在xml文件中使用该变量,按照三方件的guide正确配置了xml,但还是启动不起来,总是报上述错误。

首先第一步,要确认到底是变量读取不到,还是xml配置的不对,然后才能继续分析。

这时我们可以找到启动时加载property的类,在里面加上断点看看读取到的properties是否正确。

注:PropertySourceLoader接口是用来在项目启动的时候加载properties、xml、yml配置文件的,这个接口有两个实现类PropertiesPropertySourceLoader和YamlPropertySourceLoader,分别用来加载 properties文件和yml配置文件。

我的project配置的是yml,所以在YamlPropertySourceLoader.class中打上断点,就能知道当前读取的是哪个yml(对于多环境的yml配置),以及yml里的配置是否都已经加载成功。 

说个题外话,yml的加载顺序大家应该都很清楚,如果你同时配置了bootstrap.yml和application.ymlÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值