diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/DefaultBinderFactory.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/DefaultBinderFactory.java index cbe737ac9..d0ee2f825 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/DefaultBinderFactory.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/DefaultBinderFactory.java @@ -204,7 +204,15 @@ public class DefaultBinderFactory implements BinderFactory, DisposableBean, Appl } ConfigurableApplicationContext binderProducingContext = springApplicationBuilder .run(args.toArray(new String[args.size()])); + Binder binder = binderProducingContext.getBean(Binder.class); + /* + * This will ensure that application defined errorChannel and other beans are accessible within binder's context + * (see https://github.com/spring-cloud/spring-cloud-stream/issues/1384) + */ + if (this.context != null && binder instanceof ApplicationContextAware) { + ((ApplicationContextAware)binder).setApplicationContext(this.context); + } if (!CollectionUtils.isEmpty(this.listeners)) { for (Listener binderFactoryListener : listeners) { binderFactoryListener.afterBinderContextInitialized(configurationName, binderProducingContext);