首页 > 解决方案 > Spring Boot - 将应用程序属性注入 Util 类变量

问题描述

我想按标题问一个问题。

我有一个 util 类,如下所示:

@PropertySource("classpath:application.properties")
public class ServiceUtils {

    @Value("${dummy}")
    public static String SOME_VAR;

    @Value("${dummy}")
    // Baeldung says that it's not possible to inject props to static vars
    public void setSomeVar(String var) {
       SOME_VAR = var;
    }
}

当我启动应用程序并进行调试时,上述变量SOME_VARnull:(

我知道我在 Util 类中使用它,我认为这是一种反模式。

有人可以帮助我了解我需要纠正什么才能使其正常工作吗?

问候

标签: javaspring-bootdependency-injection

解决方案


Spring 不允许您在静态变量中注入值。改用非静态的。

如果它必须是静态的,请执行以下操作:

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

@Component
public class ServiceUtils {

    public static String SOME_VAR;

    @Value("${dummy}")
    public void setSomevar(String value) {
        SOME_VAR= value;
    }

}

推荐阅读