使用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()); }
这样就可以获取到了。