|
1 | 1 | /*
|
2 |
| - * Copyright 2012-2024 the original author or authors. |
| 2 | + * Copyright 2012-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
24 | 24 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
25 | 25 | import org.springframework.boot.autoconfigure.condition.ConditionalOnJndi;
|
26 | 26 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
| 27 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
27 | 28 | import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
|
28 | 29 | import org.springframework.boot.jms.ConnectionFactoryUnwrapper;
|
29 | 30 | import org.springframework.context.annotation.Bean;
|
30 | 31 | import org.springframework.context.annotation.Configuration;
|
31 | 32 | import org.springframework.jms.annotation.EnableJms;
|
32 | 33 | import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
|
33 | 34 | import org.springframework.jms.config.JmsListenerConfigUtils;
|
| 35 | +import org.springframework.jms.config.SimpleJmsListenerContainerFactory; |
34 | 36 | import org.springframework.jms.support.converter.MessageConverter;
|
35 | 37 | import org.springframework.jms.support.destination.DestinationResolver;
|
36 | 38 | import org.springframework.jms.support.destination.JndiDestinationResolver;
|
|
42 | 44 | * @author Phillip Webb
|
43 | 45 | * @author Stephane Nicoll
|
44 | 46 | * @author Eddú Meléndez
|
| 47 | + * @author Vedran Pavic |
45 | 48 | */
|
46 | 49 | @Configuration(proxyBeanMethods = false)
|
47 | 50 | @ConditionalOnClass(EnableJms.class)
|
48 | 51 | class JmsAnnotationDrivenConfiguration {
|
49 | 52 |
|
50 |
| - private final ObjectProvider<DestinationResolver> destinationResolver; |
51 |
| - |
52 |
| - private final ObjectProvider<JtaTransactionManager> transactionManager; |
| 53 | + @Configuration(proxyBeanMethods = false) |
| 54 | + @ConditionalOnProperty(name = "spring.jms.listener.container-type", havingValue = "default", matchIfMissing = true) |
| 55 | + static class DefaultJmsListenerContainerFactoryConfiguration { |
53 | 56 |
|
54 |
| - private final ObjectProvider<MessageConverter> messageConverter; |
| 57 | + @Bean |
| 58 | + @ConditionalOnMissingBean |
| 59 | + DefaultJmsListenerContainerFactoryConfigurer jmsListenerContainerFactoryConfigurer( |
| 60 | + ObjectProvider<DestinationResolver> destinationResolver, |
| 61 | + ObjectProvider<JtaTransactionManager> transactionManager, |
| 62 | + ObjectProvider<MessageConverter> messageConverter, ObjectProvider<ExceptionListener> exceptionListener, |
| 63 | + ObjectProvider<ObservationRegistry> observationRegistry, JmsProperties properties) { |
| 64 | + DefaultJmsListenerContainerFactoryConfigurer configurer = new DefaultJmsListenerContainerFactoryConfigurer(); |
| 65 | + configurer.setDestinationResolver(destinationResolver.getIfUnique()); |
| 66 | + configurer.setTransactionManager(transactionManager.getIfUnique()); |
| 67 | + configurer.setMessageConverter(messageConverter.getIfUnique()); |
| 68 | + configurer.setExceptionListener(exceptionListener.getIfUnique()); |
| 69 | + configurer.setObservationRegistry(observationRegistry.getIfUnique()); |
| 70 | + configurer.setJmsProperties(properties); |
| 71 | + return configurer; |
| 72 | + } |
55 | 73 |
|
56 |
| - private final ObjectProvider<ExceptionListener> exceptionListener; |
| 74 | + @Bean |
| 75 | + @ConditionalOnSingleCandidate(ConnectionFactory.class) |
| 76 | + @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") |
| 77 | + DefaultJmsListenerContainerFactory jmsListenerContainerFactory( |
| 78 | + DefaultJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { |
| 79 | + DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); |
| 80 | + configurer.configure(factory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory)); |
| 81 | + return factory; |
| 82 | + } |
57 | 83 |
|
58 |
| - private final ObjectProvider<ObservationRegistry> observationRegistry; |
| 84 | + } |
59 | 85 |
|
60 |
| - private final JmsProperties properties; |
| 86 | + @Configuration(proxyBeanMethods = false) |
| 87 | + @ConditionalOnProperty(name = "spring.jms.listener.container-type", havingValue = "simple") |
| 88 | + static class SimpleJmsListenerContainerFactoryConfiguration { |
61 | 89 |
|
62 |
| - JmsAnnotationDrivenConfiguration(ObjectProvider<DestinationResolver> destinationResolver, |
63 |
| - ObjectProvider<JtaTransactionManager> transactionManager, ObjectProvider<MessageConverter> messageConverter, |
64 |
| - ObjectProvider<ExceptionListener> exceptionListener, |
65 |
| - ObjectProvider<ObservationRegistry> observationRegistry, JmsProperties properties) { |
66 |
| - this.destinationResolver = destinationResolver; |
67 |
| - this.transactionManager = transactionManager; |
68 |
| - this.messageConverter = messageConverter; |
69 |
| - this.exceptionListener = exceptionListener; |
70 |
| - this.observationRegistry = observationRegistry; |
71 |
| - this.properties = properties; |
72 |
| - } |
| 90 | + @Bean |
| 91 | + @ConditionalOnMissingBean |
| 92 | + SimpleJmsListenerContainerFactoryConfigurer jmsListenerContainerFactoryConfigurer( |
| 93 | + ObjectProvider<DestinationResolver> destinationResolver, |
| 94 | + ObjectProvider<MessageConverter> messageConverter, ObjectProvider<ExceptionListener> exceptionListener, |
| 95 | + ObjectProvider<ObservationRegistry> observationRegistry, JmsProperties properties) { |
| 96 | + SimpleJmsListenerContainerFactoryConfigurer configurer = new SimpleJmsListenerContainerFactoryConfigurer(); |
| 97 | + configurer.setDestinationResolver(destinationResolver.getIfUnique()); |
| 98 | + configurer.setMessageConverter(messageConverter.getIfUnique()); |
| 99 | + configurer.setExceptionListener(exceptionListener.getIfUnique()); |
| 100 | + configurer.setObservationRegistry(observationRegistry.getIfUnique()); |
| 101 | + configurer.setJmsProperties(properties); |
| 102 | + return configurer; |
| 103 | + } |
73 | 104 |
|
74 |
| - @Bean |
75 |
| - @ConditionalOnMissingBean |
76 |
| - DefaultJmsListenerContainerFactoryConfigurer jmsListenerContainerFactoryConfigurer() { |
77 |
| - DefaultJmsListenerContainerFactoryConfigurer configurer = new DefaultJmsListenerContainerFactoryConfigurer(); |
78 |
| - configurer.setDestinationResolver(this.destinationResolver.getIfUnique()); |
79 |
| - configurer.setTransactionManager(this.transactionManager.getIfUnique()); |
80 |
| - configurer.setMessageConverter(this.messageConverter.getIfUnique()); |
81 |
| - configurer.setExceptionListener(this.exceptionListener.getIfUnique()); |
82 |
| - configurer.setObservationRegistry(this.observationRegistry.getIfUnique()); |
83 |
| - configurer.setJmsProperties(this.properties); |
84 |
| - return configurer; |
85 |
| - } |
| 105 | + @Bean |
| 106 | + @ConditionalOnSingleCandidate(ConnectionFactory.class) |
| 107 | + @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") |
| 108 | + SimpleJmsListenerContainerFactory jmsListenerContainerFactory( |
| 109 | + SimpleJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { |
| 110 | + SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); |
| 111 | + configurer.configure(factory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory)); |
| 112 | + return factory; |
| 113 | + } |
86 | 114 |
|
87 |
| - @Bean |
88 |
| - @ConditionalOnSingleCandidate(ConnectionFactory.class) |
89 |
| - @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") |
90 |
| - DefaultJmsListenerContainerFactory jmsListenerContainerFactory( |
91 |
| - DefaultJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { |
92 |
| - DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); |
93 |
| - configurer.configure(factory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory)); |
94 |
| - return factory; |
95 | 115 | }
|
96 | 116 |
|
97 | 117 | @Configuration(proxyBeanMethods = false)
|
|
0 commit comments