Spring @Value 为空 [重复]

Posted

技术标签:

【中文标题】Spring @Value 为空 [重复]【英文标题】:Spring @Value is null [duplicate] 【发布时间】:2018-03-11 05:20:09 【问题描述】:

正如标题所说,我的 @Value 没有传递值

我在 application.properties 中写了以下内容:

project:
  image:
    path= "C:\\Users\\...."

我有一个类配置

@Component
public class Configuration
    @Value("$project.image.path")
    public static String ImagePath;

在我的另一个名为 Image 的类中,我想将字符串路径转换为文件,以便以后可以使用此值:

public class Image
    static File Directory= new File (Configuration.ImagePath);

问题是,当我使用我的程序并使用其中一种方法时,其中使用了变量 Directory(它们都写在 Image 类中),我得到一个 NullPointerException: null 并且奇怪的是,当我在错误后刷新站点时发生一次,错误现在说 NoClassDefFoundError: Could not initialize class com.Project.Image

【问题讨论】:

我觉得应该是project.image.path= "C:\\Users\\..去掉冒号设置. 还是不行,不过谢谢 你在Image类@Autowire Configuration?987654326@中自动装配了 【参考方案1】:

您不能在静态属性上使用@Value。删除 static 关键字或 为您的静态变量创建一个非静态设置器:

@Component
public class Configuration 

    private static String imagePath;

    @Value("$project.image.path")
    public void setImagePath(String value) 
        this.imagePath = value;
    

【讨论】:

谢谢!这对我有用!

以上是关于Spring @Value 为空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

spring注入为空

使用 Spring Boot 的 Feign 客户端:RequestParam.value() 在参数 0 上为空

为啥@Value 属性为空?

如果在 Spring Data JPA 中为空或为空,如何在 @Query 中跳过 @Param

使用@Secured 时,spring 会话范围表单为空

springboot @Value获取值为空,解决办法