我正在使用spring-boot
和spring-rabbitmq
包。我有一些配置类和类代表客户端。此客户端类有一个使用@RabbitListener
注释的侦听器。我的配置和客户端一切都很好 - 它确实有效。
但是,我需要了解有关此客户端类内部的一些详细信息。在上下文中是否有特殊的东西?我希望能够注入三个可用数据源中的一个(三个bean)。我的意思是我希望能够基于消息的第一个符号(感谢自定义转换器,我可以假设这个符号发生),实际的数据源bean将被注入/使用。
有什么想法吗?也许spring-rabbitmq
会以某种方式修改上下文?
答案 0 :(得分:0)
具有@RabbitListener
的类必须在应用程序上下文中声明为bean(无论哪种方式 - 超出问题范围)。它必须是singleton
- 只创建一次对象。因此,所有注射必须在其实例化/初始化期间完成。
因此,在@RabbitListener
方法调用期间,您应该选择合适的DataSource
,例如:
@Autowired
Map<String, DataSource> dataSources;
您在问题中描述的内容并不是Spring Dependency Injection Container的行为。