為什么獲取不到@Value注解值?


使用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());  
}

這樣就可以獲取到了。

 


免責聲明!

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



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