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