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