Skip to content

Commit da53ed6

Browse files
artembilangaryrussell
authored andcommitted
INT-4485: Don't register bean twice for DSL Specs
JIRA: https://jira.spring.io/browse/INT-4485 The `IntegrationFlowBeanPostProcessor` performs extra bean registration for the `IntegrationComponentSpec.get()` result. Essentially it is going to be the same object in the end, but during bean registration phase we end up with names conflict. * Remove an explicit `registerComponent()` for the `IntegrationComponentSpec.get()` * Modify `CorrelationHandlerTests` for all possible usage for the `MessageChannelSpec`, which is essentially a `FactoryBean` **Cherry-pick to 5.0.x**
1 parent 85bc183 commit da53ed6

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

spring-integration-core/src/main/java/org/springframework/integration/dsl/IntegrationFlowBeanPostProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ private Object processIntegrationFlowImpl(IntegrationFlow flow, String beanName)
309309
}
310310

311311
private void processIntegrationComponentSpec(IntegrationComponentSpec<?, ?> bean) {
312-
registerComponent(bean.get(), generateBeanName(bean.get(), bean.getId()));
313312
if (bean instanceof ComponentsRegistration) {
314313
Map<Object, String> componentsToRegister = ((ComponentsRegistration) bean).getComponentsToRegister();
315314
if (!CollectionUtils.isEmpty(componentsToRegister)) {

spring-integration-core/src/test/java/org/springframework/integration/dsl/correlation/CorrelationHandlerTests.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.springframework.integration.config.EnableIntegration;
4444
import org.springframework.integration.dsl.IntegrationFlow;
4545
import org.springframework.integration.dsl.IntegrationFlows;
46+
import org.springframework.integration.dsl.MessageChannelSpec;
4647
import org.springframework.integration.dsl.MessageChannels;
4748
import org.springframework.integration.handler.MessageTriggerAction;
4849
import org.springframework.integration.support.MessageBuilder;
@@ -175,12 +176,17 @@ public TestSplitterPojo testSplitterData() {
175176
return new TestSplitterPojo(first, second);
176177
}
177178

179+
@Bean
180+
public MessageChannelSpec<?, ?> executorChannel() {
181+
return MessageChannels.executor(taskExecutor());
182+
}
183+
178184
@Bean
179185
@SuppressWarnings("rawtypes")
180-
public IntegrationFlow splitResequenceFlow() {
186+
public IntegrationFlow splitResequenceFlow(MessageChannel executorChannel) {
181187
return f -> f.enrichHeaders(s -> s.header("FOO", "BAR"))
182188
.split("testSplitterData", "buildList", c -> c.applySequence(false))
183-
.channel(MessageChannels.executor(taskExecutor()))
189+
.channel(executorChannel)
184190
.split(Message.class, Message::getPayload, c -> c.applySequence(false))
185191
.channel(MessageChannels.executor(taskExecutor()))
186192
.split(s -> s
@@ -229,6 +235,11 @@ public IntegrationFlow publishSubscribeAggregateFlow() {
229235
.channel(MessageChannels.queue("subscriberAggregateResult"));
230236
}
231237

238+
@Bean
239+
public MessageChannelSpec<?, ?> barrierResults() {
240+
return MessageChannels.queue("barrierResults");
241+
}
242+
232243
@Bean
233244
public IntegrationFlow barrierFlow() {
234245
return f -> f
@@ -240,13 +251,18 @@ public IntegrationFlow barrierFlow() {
240251
.skip(1)
241252
.findFirst()
242253
.get()))
243-
.channel(MessageChannels.queue("barrierResults"));
254+
.channel("barrierResults");
255+
}
256+
257+
@Bean
258+
public MessageChannelSpec<?, ?> releaseChannel() {
259+
return MessageChannels.queue("releaseChannel");
244260
}
245261

246262
@Bean
247263
@DependsOn("barrierFlow")
248264
public IntegrationFlow releaseBarrierFlow(MessageTriggerAction barrierTriggerAction) {
249-
return IntegrationFlows.from(MessageChannels.queue("releaseChannel"))
265+
return IntegrationFlows.from(releaseChannel())
250266
.trigger(barrierTriggerAction,
251267
e -> e.poller(p -> p.fixedDelay(100)))
252268
.get();

0 commit comments

Comments
 (0)