循环依赖解决
出现循环依赖之后,我们可以在系统构造的时候一构造就进行使用。
@Autowired
RabbitTemplate rabbitTemplate;
public RabbitMqTest(RabbitTemplate rabbitTemplate){
this.rabbitTemplate = rabbitTemplate;
//将当前循环依赖的方法在系统一构造就进行使用
ininRabbitTemplate();
}
如果这种方法无效,我们可以从错误信息中找到rabbitmq(例子)自动配置类,在其中查看循环依赖的RabbitTemplate是如何配置的,拿到参数连接工厂,我们可以直接new一个RabbitTemplate然后将连接工厂放进去,在将当前获得的rabbitTemplate赋值给this.rabbitTemplate,缺点就是缺少了一些配置
//主要的
@Primary
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
this.rabbitTemplate = rabbitTemplate;
ininRabbitTemplate();
return rabbitTemplate;
}