前言

前面自己做项目用了SpringBoot3,因为涉及到支付,所以加了RocketMQ。开开心心的引入maven依赖,配置yml文件,编写业务代码。一跑,嚯,消费者没注册上。后面想了很多办法都没有解决,又不想降低SpringBoot版本。最后多方查找,最终在github中RocketMQ的官方项目中找到一篇issue解决了这个问题。传送门

解决方案

在resources下创建META-INF,然后在META-INF下创建文件夹spring。最后在spring文件夹下创建名为org.springframework.boot.autoconfigure.AutoConfiguration.imports的文件

如图

springboot3-rocketmq-1.jpg

在文件中添加内容org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration

效果如图

spring3-rocketmq-2.jpg

原因

Springboot-3.0已经放弃了spring.factories自动装配,它被/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports所取代。

关于SpringBoot自动装配的简介

SpringBoot定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到Spring容器(此处涉及到 JVM 类加载机制与 Spring 的容器知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照SpringBoot定义的标准,就能将自己的功能装置进SpringBoot。


注:druid也是,需要加上自动装配

com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure