问题现象:

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;

    ...................

}

只要这简单三步就可以了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐