Skip to content

Commit e7706b4

Browse files
committed
Merge branch '2.7.x' into 3.0.x
Closes gh-36771
2 parents 870df5a + 6ccc13f commit e7706b4

File tree

2 files changed

+39
-25
lines changed

2 files changed

+39
-25
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/artemis/ArtemisConnectionFactoryConfiguration.java

+24-25
Original file line numberDiff line numberDiff line change
@@ -43,41 +43,40 @@
4343
class ArtemisConnectionFactoryConfiguration {
4444

4545
@Configuration(proxyBeanMethods = false)
46-
@ConditionalOnClass(CachingConnectionFactory.class)
4746
@ConditionalOnProperty(prefix = "spring.artemis.pool", name = "enabled", havingValue = "false",
4847
matchIfMissing = true)
4948
static class SimpleConnectionFactoryConfiguration {
5049

51-
private final ArtemisProperties properties;
52-
53-
private final ListableBeanFactory beanFactory;
50+
@Bean(name = "jmsConnectionFactory")
51+
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
52+
ActiveMQConnectionFactory jmsConnectionFactory(ArtemisProperties properties, ListableBeanFactory beanFactory) {
53+
return createJmsConnectionFactory(properties, beanFactory);
54+
}
5455

55-
SimpleConnectionFactoryConfiguration(ArtemisProperties properties, ListableBeanFactory beanFactory) {
56-
this.properties = properties;
57-
this.beanFactory = beanFactory;
56+
private static ActiveMQConnectionFactory createJmsConnectionFactory(ArtemisProperties properties,
57+
ListableBeanFactory beanFactory) {
58+
return new ArtemisConnectionFactoryFactory(beanFactory, properties)
59+
.createConnectionFactory(ActiveMQConnectionFactory.class);
5860
}
5961

60-
@Bean(name = "jmsConnectionFactory")
62+
@Configuration(proxyBeanMethods = false)
63+
@ConditionalOnClass(CachingConnectionFactory.class)
6164
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true",
6265
matchIfMissing = true)
63-
CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties) {
64-
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
65-
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(createConnectionFactory());
66-
connectionFactory.setCacheConsumers(cacheProperties.isConsumers());
67-
connectionFactory.setCacheProducers(cacheProperties.isProducers());
68-
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize());
69-
return connectionFactory;
70-
}
71-
72-
@Bean(name = "jmsConnectionFactory")
73-
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
74-
ActiveMQConnectionFactory jmsConnectionFactory() {
75-
return createConnectionFactory();
76-
}
66+
static class CachingConnectionFactoryConfiguration {
67+
68+
@Bean(name = "jmsConnectionFactory")
69+
CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties,
70+
ArtemisProperties properties, ListableBeanFactory beanFactory) {
71+
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
72+
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
73+
createJmsConnectionFactory(properties, beanFactory));
74+
connectionFactory.setCacheConsumers(cacheProperties.isConsumers());
75+
connectionFactory.setCacheProducers(cacheProperties.isProducers());
76+
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize());
77+
return connectionFactory;
78+
}
7779

78-
private ActiveMQConnectionFactory createConnectionFactory() {
79-
return new ArtemisConnectionFactoryFactory(this.beanFactory, this.properties)
80-
.createConnectionFactory(ActiveMQConnectionFactory.class);
8180
}
8281

8382
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/artemis/ArtemisAutoConfigurationTests.java

+15
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646

4747
import org.springframework.boot.autoconfigure.AutoConfigurations;
4848
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
49+
import org.springframework.boot.test.context.FilteredClassLoader;
4950
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
5051
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
5152
import org.springframework.context.ApplicationContext;
@@ -356,6 +357,20 @@ void poolConnectionFactoryConfiguration() {
356357
});
357358
}
358359

360+
@Test
361+
void cachingConnectionFactoryNotOnTheClasspathThenSimpleConnectionFactoryAutoConfigured() {
362+
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
363+
.withPropertyValues("spring.artemis.pool.enabled=false", "spring.jms.cache.enabled=false")
364+
.run((context) -> assertThat(context).hasSingleBean(ActiveMQConnectionFactory.class));
365+
}
366+
367+
@Test
368+
void cachingConnectionFactoryNotOnTheClasspathAndCacheEnabledThenSimpleConnectionFactoryNotConfigured() {
369+
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
370+
.withPropertyValues("spring.artemis.pool.enabled=false", "spring.jms.cache.enabled=true")
371+
.run((context) -> assertThat(context).doesNotHaveBean(ActiveMQConnectionFactory.class));
372+
}
373+
359374
private ConnectionFactory getConnectionFactory(AssertableApplicationContext context) {
360375
assertThat(context).hasSingleBean(ConnectionFactory.class).hasBean("jmsConnectionFactory");
361376
ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class);

0 commit comments

Comments
 (0)