【spring錯誤】在學習rabbitMq時,@Autowired注入的amqpTemplate始終為空
阿新 • • 發佈:2018-11-13
問題
測試rabbitMq傳送端時,發現amqpTemplate為空
@Test public void testMessage() { // 自己new MQSender,amqpTemplate不會被注入 MQSender sender = new MQSender(); SeckillMessage message = new SeckillMessage(); message.setGoodsId(123L); sender.sendSeckillMessage(message); }
原因
原因就是一個內含有@Autowired註解的Bean,我們必須要通過Spring的方式來獲得這個Bean,而不能自己new一個。因為自己new出來的bean無法通過Spring容器來獲得自己需要的bean。可以簡單的理解為,要就全都使用Spring容器來管理,要麼都不用,你自己new的物件無法進入spring容器
所以說這個問題是spring容器注入問題,並不是rabbitmq的問題
解決方法
不能new MQSender,@Resource、@Autowired 的方式
參考文章:https://blog.csdn.net/SnailMann/article/details/82183787