From 75937f5b5c1450b6f7af1211d52f9e9787df6f70 Mon Sep 17 00:00:00 2001 From: Madhura Bhave Date: Tue, 4 Sep 2018 16:03:23 -0700 Subject: [PATCH] Make jmsListenerContainerFactory @ConditionalOnSingleCandidate Closes gh-12700 --- .../jms/JmsAnnotationDrivenConfiguration.java | 2 ++ .../jms/JmsAutoConfigurationTests.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java index 6354e4d841..9d77cb4d82 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java @@ -22,6 +22,7 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnJndi; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; @@ -73,6 +74,7 @@ class JmsAnnotationDrivenConfiguration { } @Bean + @ConditionalOnSingleCandidate(ConnectionFactory.class) @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") public DefaultJmsListenerContainerFactory jmsListenerContainerFactory( DefaultJmsListenerContainerFactoryConfigurer configurer, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java index 2d3f6dfdba..8ef062aff6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java @@ -149,6 +149,13 @@ public class JmsAutoConfigurationTests { SimpleJmsListenerContainerFactory.class)); } + @Test + public void jmsListenerContainerFactoryWhenMultipleConnectionFactoryBeansShouldBackOff() { + this.contextRunner.withUserConfiguration(TestConfiguration10.class) + .run((context) -> assertThat(context) + .doesNotHaveBean(JmsListenerContainerFactory.class)); + } + @Test public void testJmsListenerContainerFactoryWithCustomSettings() { this.contextRunner.withUserConfiguration(EnableJmsConfiguration.class) @@ -572,6 +579,21 @@ public class JmsAutoConfigurationTests { } + @Configuration + protected static class TestConfiguration10 { + + @Bean + public ConnectionFactory connectionFactory1() { + return new ActiveMQConnectionFactory(); + } + + @Bean + public ConnectionFactory connectionFactory2() { + return new ActiveMQConnectionFactory(); + } + + } + @Configuration @EnableJms protected static class EnableJmsConfiguration {