解决 springboot项目启动不了, @Autowired 注入错误
@Autowired
private RocketMQTemplate rocketMQTemplate;
第一种解决方式:更新依赖
以前的依赖
<!--RocketMQ相关-->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<!-- <version>2.0.0</version>-->
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-common</artifactId>
<version>4.5.1</version>
</dependency>
更改 rocketmq-spring-boot-starter 的 version 为 2.1.0
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<!-- <version>2.0.0</version>-->
<version>2.1.0</version>
</dependency>
大功告成
第二种解决方式:添加自定义配置bean
@Configuration
public class RocketMqConfig {
@Value("${rocketmq.producer.group}")
private String producerGroup;
@Value("${rocketmq.name-server}")
private String nameServer;
/**
* 由于使用的Spring版本是3.0.0以上,与rocketMq不是很兼容,对于rocketMqTemplate
* 的自动注入存在差异,如果不采用这种方式注入则会报出缺少bean的信息
*/
@Bean("RocketMqTemplate")
public RocketMQTemplate rocketMqTemplate(){
RocketMQTemplate rocketMqTemplate = new RocketMQTemplate();
DefaultMQProducer defaultMqProducer = new DefaultMQProducer();
defaultMqProducer.setProducerGroup(producerGroup);
defaultMqProducer.setNamesrvAddr(nameServer);
rocketMqTemplate.setProducer(defaultMqProducer);
return rocketMqTemplate;
}
}