代码改变世界

为什么获取不到@Value注解值?

2020-12-15 13:54  猎手家园  阅读(3365)  评论(0编辑  收藏  举报

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

这样就可以获取到了。