代码改变世界

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

  猎手家园  阅读(3460)  评论(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());  
}

这样就可以获取到了。

 

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示