Skip to content

Commit 55079c3

Browse files
committed
Merge branch '2.1.x'
Closes gh-17602
2 parents 0ff4484 + 657411d commit 55079c3

File tree

2 files changed

+43
-31
lines changed

2 files changed

+43
-31
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfiguration.java

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.springframework.boot.autoconfigure.jms.activemq;
1818

19-
import java.util.List;
2019
import java.util.stream.Collectors;
2120

2221
import javax.jms.ConnectionFactory;
@@ -49,43 +48,42 @@
4948
class ActiveMQConnectionFactoryConfiguration {
5049

5150
@Configuration(proxyBeanMethods = false)
52-
@ConditionalOnClass(CachingConnectionFactory.class)
5351
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "false",
5452
matchIfMissing = true)
5553
static class SimpleConnectionFactoryConfiguration {
5654

57-
private final ActiveMQProperties properties;
58-
59-
private final List<ActiveMQConnectionFactoryCustomizer> connectionFactoryCustomizers;
60-
61-
SimpleConnectionFactoryConfiguration(ActiveMQProperties properties,
62-
ObjectProvider<ActiveMQConnectionFactoryCustomizer> connectionFactoryCustomizers) {
63-
this.properties = properties;
64-
this.connectionFactoryCustomizers = connectionFactoryCustomizers.orderedStream()
65-
.collect(Collectors.toList());
55+
@Bean
56+
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
57+
ActiveMQConnectionFactory jmsConnectionFactory(ActiveMQProperties properties,
58+
ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
59+
return new ActiveMQConnectionFactoryFactory(properties,
60+
factoryCustomizers.orderedStream().collect(Collectors.toList()))
61+
.createConnectionFactory(ActiveMQConnectionFactory.class);
6662
}
6763

68-
@Bean
64+
@Configuration(proxyBeanMethods = false)
65+
@ConditionalOnClass(CachingConnectionFactory.class)
6966
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true",
7067
matchIfMissing = true)
71-
CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties) {
72-
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
73-
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(createConnectionFactory());
74-
connectionFactory.setCacheConsumers(cacheProperties.isConsumers());
75-
connectionFactory.setCacheProducers(cacheProperties.isProducers());
76-
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize());
77-
return connectionFactory;
78-
}
79-
80-
@Bean
81-
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
82-
ActiveMQConnectionFactory jmsConnectionFactory() {
83-
return createConnectionFactory();
84-
}
68+
static class CachingConnectionFactoryConfiguration {
69+
70+
@Bean
71+
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true",
72+
matchIfMissing = true)
73+
CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties,
74+
ActiveMQProperties properties,
75+
ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
76+
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
77+
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
78+
new ActiveMQConnectionFactoryFactory(properties,
79+
factoryCustomizers.orderedStream().collect(Collectors.toList()))
80+
.createConnectionFactory(ActiveMQConnectionFactory.class));
81+
connectionFactory.setCacheConsumers(cacheProperties.isConsumers());
82+
connectionFactory.setCacheProducers(cacheProperties.isProducers());
83+
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize());
84+
return connectionFactory;
85+
}
8586

86-
private ActiveMQConnectionFactory createConnectionFactory() {
87-
return new ActiveMQConnectionFactoryFactory(this.properties, this.connectionFactoryCustomizers)
88-
.createConnectionFactory(ActiveMQConnectionFactory.class);
8987
}
9088

9189
}
@@ -95,8 +93,7 @@ private ActiveMQConnectionFactory createConnectionFactory() {
9593
static class PooledConnectionFactoryConfiguration {
9694

9795
@Bean(destroyMethod = "stop")
98-
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true",
99-
matchIfMissing = false)
96+
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true")
10097
JmsPoolConnectionFactory pooledJmsConnectionFactory(ActiveMQProperties properties,
10198
ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
10299
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactoryFactory(properties,

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQAutoConfigurationTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import org.springframework.boot.autoconfigure.AutoConfigurations;
2626
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
27+
import org.springframework.boot.test.context.FilteredClassLoader;
2728
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2829
import org.springframework.context.annotation.Bean;
2930
import org.springframework.context.annotation.Configuration;
@@ -189,6 +190,20 @@ void poolConnectionFactoryConfiguration() {
189190
});
190191
}
191192

193+
@Test
194+
void cachingConnectionFactoryNotOnTheClasspathThenSimpleConnectionFactoryAutoConfigured() {
195+
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
196+
.withPropertyValues("spring.activemq.pool.enabled=false", "spring.jms.cache.enabled=false")
197+
.run((context) -> assertThat(context).hasSingleBean(ActiveMQConnectionFactory.class));
198+
}
199+
200+
@Test
201+
void cachingConnectionFactoryNotOnTheClasspathAndCacheEnabledThenSimpleConnectionFactoryNotConfigured() {
202+
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
203+
.withPropertyValues("spring.activemq.pool.enabled=false", "spring.jms.cache.enabled=true")
204+
.run((context) -> assertThat(context).doesNotHaveBean(ActiveMQConnectionFactory.class));
205+
}
206+
192207
@Configuration(proxyBeanMethods = false)
193208
static class EmptyConfiguration {
194209

0 commit comments

Comments
 (0)