spring中@Value的使用(讀取組態檔資訊)

2020-10-05 11:01:01

選取任意一個spring-***檔案寫入:

<context:property-placeholder location="classpath:database.properties,classpath:de.properties"/>

在這裡插入圖片描述
在這裡插入圖片描述

springmvc @Value取值為NULL的解決方案

在spring mvc架構中,如果希望在程式中直接使用properties中定義的設定值,通常使用一下方式來獲取:

    @Value("${tag}")
    private String tagValue;

但是取值時,有時這個tagvalue為NULL,可能原因有:

使用static或final修飾了tagValue,如下:

    private static String tagValue;  //錯誤
    private final String tagValue;    //錯誤

類沒有加上@Component(或者@service等)

    @Component   //遺漏
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }

類被new新建了範例(踩過這個坑),而沒有使用@Autowired

    @Component   
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }
   錯誤範例:
    class Test{
        ...
        TestValue testValue = new TestValue()
    }
    正確範例:
    class Test{
        ...
         @Autowired
         private TestValue testValue;
    }