1分钟解决:SpringBoot启动报错Injection of autowired dependencies failed; Could not resolve placeholder: 问题
问题现象:SpringBoot项目读取配置文件中参数给类中的变量赋值时,,报错:Error creating bean with name 'testController': Unsatisfied dependency expressed through field 'XXX'; |nested exception is org.springframework.beans.factory.Bea
问题现象:
SpringBoot项目读取配置文件中参数给类中的变量赋值时,,报错:
Error creating bean with name 'testController': Unsatisfied dependency expressed through field 'XXX'; |nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testClass': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'test1.test2.test3' in value "${test1.test2.test3}"
问题原因:
(1)首先就是要检查你的拼写有没有问题,在@Value注解中写的跟配置文件中写的单词是不是一样!!
(2)配置或依赖问题;
解决办法:
(1)检查@Value注解中的参数路径与配置文件中是否一样,就是'test1.test2.test3'这个有没有写错,很多人都是因为拼写错了,以为是程序和配置问题,结果弄了半天发现方向错了;
(2)配置和使用方法,分三步:
第一步:添加依赖,在pom文件中添加
<!-- 自动读取配置文件,赋值给成员变量依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
第二步:在application.yml中设置配置
test1:
test2:
test3: 11111111
第三步:在要读取application.yml中数值的类上,加上注解
@ConfigurationProperties(prefix = "test1")
public class TencentSmsSender extends AbstractSmsSender {
@Value("${test1.test2.test3}")
private String sdkAppId;
...................
}
只要这简单三步就可以了。
更多推荐
所有评论(0)