我想问一下导入多个Spring Integration上下文时究竟发生了什么?
如果通道节点在后续上下文中匹配,它们是否会相互覆盖?或者是否有一些机制来阻止这种行为?
答案 0 :(得分:2)
Spring Integration应用程序只是一个Spring应用程序,因此遵循所有配置规则。
当您导入多个上下文时,它们都会被压缩到单个应用程序上下文中。
你覆盖哪些bean类型并不重要(通道也是bean)。如果几个bean具有相同的名称,默认情况下最后一个将获胜。
改变这种行为并不容易 - DefaultListableBeanFactory#setAllowBeanDefinitionOverriding(false)
从另一方面,您可以启用INFO
类别的org.springframework.beans.factory.support.DefaultListableBeanFactory
日志记录级别,并且您将在应用程序启动时看到覆盖的bean。
当几个bean具有相同的名称时,建议使用唯一的bean名称,实际上,IDE会抱怨。