From 10682c6805932292d8271dc8787a5a3fce5cce2c Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 7 Aug 2019 10:46:33 +0200 Subject: [PATCH] GH-1770 additional fixes on BindingService lifecycle --- .../stream/binding/AbstractBindingLifecycle.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/AbstractBindingLifecycle.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/AbstractBindingLifecycle.java index 83e0a436b..2cf9219ad 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/AbstractBindingLifecycle.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/AbstractBindingLifecycle.java @@ -18,6 +18,8 @@ package org.springframework.cloud.stream.binding; import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.context.SmartLifecycle; /** @@ -34,6 +36,9 @@ abstract class AbstractBindingLifecycle implements SmartLifecycle { private final Map bindables; + @Autowired + private ApplicationContext context; + private volatile boolean running; AbstractBindingLifecycle(BindingService bindingService, @@ -45,6 +50,10 @@ abstract class AbstractBindingLifecycle implements SmartLifecycle { @Override public void start() { if (!this.running) { + if (this.context != null) { + this.bindables.putAll(context.getBeansOfType(Bindable.class)); + } + this.bindables.values().forEach(this::doStartWithBindable); this.running = true; } @@ -53,6 +62,9 @@ abstract class AbstractBindingLifecycle implements SmartLifecycle { @Override public void stop() { if (this.running) { + if (this.context != null) { + this.bindables.putAll(context.getBeansOfType(Bindable.class)); + } this.bindables.values().forEach(this::doStopWithBindable); this.running = false; }