關於@Value注解 不能給static靜態變量注入值的 問題及解決方案


@Value注解 ,不能給static靜態變量注入值。如下,ENV在使用的時候會顯示null。

@Value("${environment.variable}")
private static String ENV;

一般解決方案有兩種,一種是set方法賦值。另一種是使用@PostConstruct + 中轉變量初始化,先用 @Value 給中轉變量賦值,然后由中轉變量再賦值給static變量。

一:component注解一定要加。

@Component
public class Test {
    public static String ENV;

    @Value("${env}")
    public static void setEnv(String env) {
        Test.ENV= env;
    }
}

二: 兩個注解加上

@Component
public class Test {
    public static String ENV;

    @Value("${env}")
    public String temp;

    @PostConstruct
    public void init() {
        ENV= temp;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM