diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractSimpleMessageHandlerFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractSimpleMessageHandlerFactoryBean.java index a3fb531904..4c82b6d8a8 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractSimpleMessageHandlerFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/AbstractSimpleMessageHandlerFactoryBean.java @@ -27,17 +27,21 @@ import org.springframework.util.Assert; /** * @author Dave Syer - * */ -public abstract class AbstractSimpleMessageHandlerFactoryBean implements -FactoryBean, BeanFactoryAware { +public abstract class AbstractSimpleMessageHandlerFactoryBean implements FactoryBean, BeanFactoryAware { + + private volatile MessageHandler handler; + + private volatile MessageChannel outputChannel; + + private volatile Integer order; + + private BeanFactory beanFactory; private volatile boolean initialized; + private final Object initializationMonitor = new Object(); - private volatile MessageHandler handler; - private volatile MessageChannel outputChannel; - private volatile Integer order; - private BeanFactory beanFactory; + public AbstractSimpleMessageHandlerFactoryBean() { super(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/ExpressionControlBusFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/config/ExpressionControlBusFactoryBean.java index 508b3651d9..8190ef073e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/ExpressionControlBusFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/ExpressionControlBusFactoryBean.java @@ -30,27 +30,23 @@ public class ExpressionControlBusFactoryBean extends AbstractSimpleMessageHandle private volatile BeanResolver beanResolver; - private final ExpressionCommandMessageProcessor processor; + private final ExpressionCommandMessageProcessor processor = new ExpressionCommandMessageProcessor(); - public ExpressionControlBusFactoryBean(ExpressionCommandMessageProcessor processor) { - this.processor = processor; - } - - - public void setBeanResolver(BeanResolver beanResolver) { - this.beanResolver = beanResolver; - } - public void setSendTimeout(Long sendTimeout) { this.sendTimeout = sendTimeout; } + public void setBeanResolver(BeanResolver beanResolver) { + this.beanResolver = beanResolver; + } + protected MessageHandler createHandler() { - if (beanResolver != null) { - processor.setBeanResolver(beanResolver); + this.processor.setBeanFactory(this.getBeanFactory()); + if (this.beanResolver != null) { + this.processor.setBeanResolver(this.beanResolver); } - ServiceActivatingHandler handler = new ServiceActivatingHandler(processor); + ServiceActivatingHandler handler = new ServiceActivatingHandler(this.processor); if (this.sendTimeout != null) { handler.setSendTimeout(this.sendTimeout); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ControlBusParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ControlBusParser.java index c8acadb99e..6be4563769 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ControlBusParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/ControlBusParser.java @@ -16,7 +16,6 @@ package org.springframework.integration.config.xml; import org.w3c.dom.Element; import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.ParserContext; /** @@ -30,8 +29,6 @@ public class ControlBusParser extends AbstractConsumerEndpointParser { protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition( "org.springframework.integration.config.ExpressionControlBusFactoryBean"); - builder.addConstructorArgValue(new RootBeanDefinition( - "org.springframework.integration.handler.ExpressionCommandMessageProcessor")); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "bean-resolver"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-timeout"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "order"); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusExplicitPollerTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusExplicitPollerTests-context.xml index 80a25bd077..789e81cde1 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusExplicitPollerTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusExplicitPollerTests-context.xml @@ -18,6 +18,6 @@ - +