一.问题描述

​ 在springboot项目中使用@Value获取值获取不到,打印到控制台的总是空

代码如下:

package com.ruoyi.rycc.core.cosUpload;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 测试从配置文件中读取数据
 *
 * @author Antg
 * @date 2021/9/7  18:13
 */
@Component
public class CosUpload2 {
    @Value("${user.password.maxRetryCount}")
    private String secretId;
    private String name = "123";

    {
        //这里使用代码块进行打印,但是项目启动后总是打印的是空
        System.out.println(name);
        System.out.println(secretId);
    }

    public void test() {
        System.out.println(secretId);
    }
}

二.问题分析

首先检查的是配置文件的格式是否有问题,我使用的是yml文件,发现没有问题

然后百度了一下说是在使用的时候不可以使用new关键字进行创建,显然不是,我是使用注入的方式

然后想是不是@Value的注入时机的问题,有可能是在使用该类实例的时候才会进行注入,代码块是类加载的时候,所以不行

最终问题解决了,就是这个原因

三.问题解决

使用@Value进行注入值的时候,只有在使用实例的时候才会注入

Logo

快速构建 Web 应用程序

更多推荐