Spring集成:使用JMX时自动装配队列失败

时间:2012-11-12 19:22:41

标签: java spring jmx spring-integration spring-jmx

我可以在测试类中使用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的声明类型有关,阻止了自动装配类型的工作?

1 个答案:

答案 0 :(得分:3)

您需要使用接口而不是具体类自动装配,因为JMX导出将通道包装在代理中。对PollableChannel使用QueueChannelSubscribableChannel使用DirectChannel

出于这个原因,使用接口而不是具体类进行编码总是很好的做法。