最近在项目中使用到了mqtt,引入springboot的相关依赖后,发现怎么都无法注入对应的service,相应的代码如下:
引入相关starter
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</dependency>
定义接口
@Component
@MessagingGateway(defaultRequestChannel = "mqttOutChannel")
public interface MqttPushService {
@MqttLog
void pushMessage(String data, @Header(MqttHeaders.TOPIC) String topic);
}
在需要的地方注入接口
@SpringBootTest
@RunWith(SpringRunner.class)
public class TestFeginConsumer {
@Autowired
private MqttPushService mqttPushServer;
@Test
public void test() {
mqttPushServer.pushMessage(null,null);
}
}
运行的上述代码提示,如下错误信息:
Action:
Consider defining a bean of type 'com.xxxx.xxxx' in your configuration
反正就是提示该bean未注入,实在是想不明白,怎么就未注入了,后面的翻看@MessagingGateway注解的文档,发现问题了
解决方案
关于@MessagingGateway注解,相关文档请点击
其中有这么一句话标注为important,如下图所示:
大概的意思就是,使用普通的注解@CompontenScan是无法扫描@MessagingGateway注解,需要使用@IntegrationComponentScan注解和@Configuration注解
至此完美解决了,真不明白网上的那些文章,吵来吵去的,都没测试过了么
the end ,感谢阅读!!!