diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java index 5e6d69dafcb..26ec7784c64 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java @@ -48,12 +48,16 @@ class JmsAnnotationDrivenConfiguration { @Autowired(required = false) private PlatformTransactionManager transactionManager; + @Autowired + private JmsProperties properties; + @Bean @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") public DefaultJmsListenerContainerFactory jmsListenerContainerFactory( ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); + factory.setPubSubDomain(properties.isPubSubDomain()); if (this.transactionManager != null) { factory.setTransactionManager(this.transactionManager); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java index a8015f03f26..09d2ff06063 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java @@ -34,13 +34,16 @@ import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerConfigUtils; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.config.SimpleJmsListenerContainerFactory; +import org.springframework.jms.config.JmsListenerEndpoint; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.listener.DefaultMessageListenerContainer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; /** * Tests for {@link JmsAutoConfiguration}. @@ -148,6 +151,17 @@ public class JmsAutoConfigurationTests { assertTrue(jmsTemplate.isPubSubDomain()); } + @Test + public void testPubSubDomainActive() { + load(TestConfiguration.class, "spring.jms.pubSubDomain:true"); + JmsTemplate jmsTemplate = this.context.getBean(JmsTemplate.class); + DefaultMessageListenerContainer defaultMessageListenerContainer = this.context + .getBean(DefaultJmsListenerContainerFactory.class) + .createListenerContainer(mock(JmsListenerEndpoint.class)); + assertTrue(jmsTemplate.isPubSubDomain()); + assertTrue(defaultMessageListenerContainer.isPubSubDomain()); + } + @Test public void testPubSubDomainOverride() { load(TestConfiguration.class, "spring.jms.pubSubDomain:false");