From 79c13a8ab27d9157a59be8dc30000be894e0c997 Mon Sep 17 00:00:00 2001 From: Marius Bogoevici Date: Tue, 18 Aug 2015 16:49:29 -0400 Subject: [PATCH] DirectChannelFactoryBean should set the bean name and bean factory on created instance --- .../config/DirectChannelFactoryBean.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/DirectChannelFactoryBean.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/DirectChannelFactoryBean.java index 70842b2ba..2c94d8f1b 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/DirectChannelFactoryBean.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/DirectChannelFactoryBean.java @@ -16,9 +16,12 @@ package org.springframework.cloud.stream.config; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.FactoryBean; import org.springframework.integration.channel.DirectChannel; -import org.springframework.messaging.MessageChannel; /** * {@link FactoryBean} for creating channels for fields annotated with @@ -27,15 +30,30 @@ import org.springframework.messaging.MessageChannel; * * @author Marius Bogoevici */ -public class DirectChannelFactoryBean implements FactoryBean { +public class DirectChannelFactoryBean implements FactoryBean, BeanNameAware, BeanFactoryAware { private DirectChannel directChannel; + private String beanName; + private BeanFactory beanFactory; + @Override - public synchronized MessageChannel getObject() throws Exception { + public void setBeanName(String beanName) { + this.beanName = beanName; + } + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + + @Override + public synchronized DirectChannel getObject() throws Exception { if (directChannel == null) { directChannel = new DirectChannel(); } + directChannel.setBeanName(beanName); + directChannel.setBeanFactory(beanFactory); return directChannel; }