diff --git a/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageProcessingSplitter.java b/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageProcessingSplitter.java index e77310c006..edc2b9647e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageProcessingSplitter.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageProcessingSplitter.java @@ -16,6 +16,7 @@ package org.springframework.integration.splitter; +import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.core.convert.ConversionService; import org.springframework.integration.core.Message; import org.springframework.integration.handler.AbstractMessageProcessor; @@ -45,6 +46,9 @@ abstract class AbstractMessageProcessingSplitter extends AbstractMessageSplitter if (conversionService != null && this.messageProcessor instanceof AbstractMessageProcessor) { ((AbstractMessageProcessor) this.messageProcessor).setConversionService(conversionService); } + if (this.messageProcessor instanceof BeanFactoryAware) { + ((BeanFactoryAware) this.messageProcessor).setBeanFactory(this.getBeanFactory()); + } } @Override diff --git a/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests-context.xml index b26ec4f619..2579e40260 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests-context.xml @@ -1,20 +1,20 @@ - - - - + + + - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests.java b/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests.java index 07d38f4872..7e57f5bf5c 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/splitter/SpelSplitterIntegrationTests.java @@ -26,7 +26,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.channel.PollableChannel; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; @@ -41,17 +40,20 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) public class SpelSplitterIntegrationTests { - @Autowired @Qualifier("input") - private MessageChannel input; + @Autowired + private MessageChannel simpleInput; - @Autowired @Qualifier("output") + @Autowired + private MessageChannel beanResolvingInput; + + @Autowired private PollableChannel output; @Test - public void split() { + public void simple() { Message message = MessageBuilder.withPayload(new TestBean()).setHeader("foo", "foo").build(); - this.input.send(message); + this.simpleInput.send(message); Message one = output.receive(0); Message two = output.receive(0); Message three = output.receive(0); @@ -66,9 +68,23 @@ public class SpelSplitterIntegrationTests { assertEquals("foo", four.getHeaders().get("foo")); assertNull(output.receive(0)); } - - - + + @Test + public void beanResolving() { + Message message = MessageBuilder.withPayload("a,b,c,d").build(); + this.beanResolvingInput.send(message); + Message a = output.receive(0); + Message b = output.receive(0); + Message c = output.receive(0); + Message d = output.receive(0); + assertEquals("a", a.getPayload()); + assertEquals("b", b.getPayload()); + assertEquals("c", c.getPayload()); + assertEquals("d", d.getPayload()); + assertNull(output.receive(0)); + } + + static class TestBean { private final List numbers = new ArrayList(); @@ -82,6 +98,10 @@ public class SpelSplitterIntegrationTests { public List getNumbers() { return this.numbers; } + + public String[] split(String s) { + return s.split(","); + } } }