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ÿ