我可以在测试类中使用QueueChannel
和@Autowired
自动装载两个@Qualifier
实例,直到我添加JMX导出命名空间处理程序。
我没有得到确切配置方便(这是工作中的一个问题,而且现在已经把我赶出了小时!),但我使用了这些元素:
<int-jmx:mbean-export default-domain="com.business" server="mbeanServer" />
<context:mbean-export />
<context:mbean-server />
当我定义了这三件事时,自动装配过程无法抛出NoSuchBeanException
。但是,我可以看到有一些带有队列ID的bean,因为我有一个后处理器,它在上下文中遍历所有bean。
这是否与代理混淆QueueChannel
的声明类型有关,阻止了自动装配类型的工作?
答案 0 :(得分:3)
您需要使用接口而不是具体类自动装配,因为JMX导出将通道包装在代理中。对PollableChannel
使用QueueChannel
,SubscribableChannel
使用DirectChannel
。
出于这个原因,使用接口而不是具体类进行编码总是很好的做法。