1. 程式人生 > >【spring錯誤】在學習rabbitMq時,@Autowired注入的amqpTemplate始終為空

【spring錯誤】在學習rabbitMq時,@Autowired注入的amqpTemplate始終為空

問題

測試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