SpringBoot中@Value读取不到值的解决方案

echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


该问题的出现方式很多,我碰到该问题的场景是使用RMQ,在使用RMQ是,创建了一个生产者,配置了很多方案都没有办法读取到值

使用技术

SpringBoot + RMQ

出问题的地方

创建了一个生产者,生产者的地址和topic都配置到了properties中,以键值对的形式存在。

关键代码

public class producer{
@Value(${"toppic"})
private String topic;

@Value(${"address"})
private String address;


private void send(){
    
}
……
}

// 调用代码
Producer p = new Producer();
p.send()

尝试的方式:

  • 1、第一种方式:对topic加上static
  • 2、第二种方式:将topic加上get/set
  • 3、第三种方式:加上@Compement

但是都没用

解决方案:调用代码删除掉new 对象操作,使用@autowrite注入,然后用注入对象直接调用send().

出现这个问题的原因

该生产者对象,在SpringBoot启动到时候已经被加载了,@Value在启动的时候已经读取到了值,加载出来的对象和值都存放在了SpringBoot容器当中,当我们使用new 操作的时候,就重置了一个对象,并没有使用容器当中的对象,自然没有办法直接读取配置文件,所以使用send()的时候,直接在使用空值,所以一直读取不到。

总结

注意调用方式、观察@Value是否有被初始化、了解bean的加载和配置的加载流程

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlecho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值