class 的上下文与侦听器 - spring-rabbitmq,内部结构和基于消息包含的注入 bean

Context of class with listener - spring-rabbitmq, internals and injecting beans based on contain of message

我正在使用 spring-bootspring-rabbitmq 包。我有一些配置 class 和 class 代表客户端。此客户 class 有一个用 @RabbitListener 注释的侦听器。我的配置和客户端一切正常 - 它确实有效。

但是,我需要了解有关此客户端内部的一些详细信息 class。上下文中是否设置了一些特殊的东西?我希望能够注入三个可用数据源(三个 bean)之一。我的意思是我希望能够基于消息的第一个符号(多亏了自定义转换器,我可以假设这个符号发生了),实际的数据源 bean 将是 injected/used。

有什么想法吗?也许 spring-rabbitmq 以某种方式修改上下文?

class 和 @RabbitListener 必须在应用程序上下文中声明为 bean(无论哪种方式 - 超出问题范围)。而且它必须是 singleton - 只创建一次对象。因此,所有注射必须在其 instantiation/initialization.

期间完成

因此,在那个 @RabbitListener 方法调用期间,您应该只选择一个合适的 DataSource,例如从:

@Autowired
Map<String, DataSource> dataSources;

您在问题中描述的不是 Spring 依赖注入容器的行为。