為什麼獲取不到@Value註解值?

獵手家園發表於2020-12-15

使用Spring時,你發現竟然獲取不到@Value的註解值?

例如我在Resource中配置:

#網站名稱
website.name=百度

然後,你需要注意三點:

1、類需要使用@Component、@Controller等進行註解;

2、欄位不能使用static修飾;

3、不能在bean初始化時構造方法中使用。

@Component
public class Test(){
    @Value("{website.name}")
    private String webSiteName;

    public Test(){
        //不能在此使用
    }
}

以上是沒有問題的。

 

但是...... 我在另一個類中呼叫時:

public class Test2(){
    Test model=new Test();
    System.out.println(model.webSiteName);  
}

這樣卻取不到值,為什麼?

困擾了我好久,最後翻了N多帖子以後,終於找到了原因。原來,使用@Value的類,在spring中,不能直接透過new 運算子來使用,而是應該透過spring的註解 @Autowired 來使用。

public class Test2(){
    @Autowired
    private Test model;

    System.out.println(model.getWebSiteName());  
}

這樣就可以獲取到了。

 

相關文章