使用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());
}
這樣就可以獲取到了。