When configuring com.azure.spring:spring-cloud-azure-starter-servicebus with connection-details via the consumer, processor, and/or the producer and NOT via the top-level key, auto-configuration fails.
Exception or Stack Trace
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceBusSenderClient' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClient' parameter 0: Error creating bean with name 'serviceBusSenderClientBuilder' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClientBuilder' parameter 0: Error creating bean with name 'serviceBusSenderClientBuilderFactory' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClientBuilderFactory' parameter 0: No qualifying bean of type 'com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:546)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1362)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1704)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1651)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:912)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
... 108 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceBusSenderClientBuilder' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClientBuilder' parameter 0: Error creating bean with name 'serviceBusSenderClientBuilderFactory' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClientBuilderFactory' parameter 0: No qualifying bean of type 'com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:546)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1362)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:229)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1762)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1651)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:912)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
... 122 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceBusSenderClientBuilderFactory' defined in class path resource [com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.class]: Unsatisfied dependency expressed through method 'serviceBusSenderClientBuilderFactory' parameter 0: No qualifying bean of type 'com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:546)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1362)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1194)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:565)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:229)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1762)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1651)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:912)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
... 136 common frames omitted
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:2297)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1725)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1651)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:912)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
To Reproduce
Steps to reproduce the behavior:
spring:
cloud:
azure:
servicebus:
processor:
connection-string: Endpoint=dummy;SharedAccessKeyName=dummy;SharedAccessKey=dummy
entity-name: some-queue
entity-type: queue
producer:
connection-string: Endpoint=dummy;SharedAccessKeyName=dummy;SharedAccessKey=dummy
entity-name: some-other-queue
entity-type: queue
RCA
In the previous versions, com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration defined the following bean if spring.cloud.azure.servicebus.enabled is true or missing completely.
@Bean
@ConfigurationProperties(AzureServiceBusProperties.PREFIX)
AzureServiceBusProperties azureServiceBusProperties() {
return loadProperties(getAzureGlobalProperties(), new AzureServiceBusProperties());
}
In the new versions (5.25.0 and 7.1.0), AzureServiceBusAutoConfiguration imports AzureServiceBusPropertiesConfiguration which in turn imports the newly introduced com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.ConfigurationWithoutConnectionDetailsBean that defines this bean:
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties(AzureServiceBusProperties.PREFIX)
AzureServiceBusProperties azureServiceBusProperties() {
return AzureGlobalPropertiesUtils.loadProperties(azureGlobalProperties, new AzureServiceBusProperties());
}
but ConfigurationWithoutConnectionDetailsBean is considered only if:
@ConditionalOnAnyProperty(prefix = "spring.cloud.azure.servicebus", name = {"connection-string", "namespace"})
in the use case above, only spring.cloud.azure.servicebus.processor.connection-string and spring.cloud.azure.servicebus.producer.connection-string are set, so AzureServiceBusProperties is not created.
Workaround
Replace the consumer or processor connection-string (i.e. spring.cloud.azure.servicebus.processor.connection-string) with the top level one (i.e. spring.cloud.azure.servicebus.connection-string):
spring:
cloud:
azure:
servicebus:
connection-string: Endpoint=dummy;SharedAccessKeyName=dummy;SharedAccessKey=dummy
processor:
entity-name: some-queue
entity-type: queue
producer:
connection-string: Endpoint=dummy;SharedAccessKeyName=dummy;SharedAccessKey=dummy
entity-name: some-other-queue
entity-type: queue
Setup (please complete the following information):
- OS: MacOS
- IDE: Intellij 2025.3.4
- Library/Libraries: com.azure.spring:spring-cloud-azure-starter-servicebus versions 7.1.0 & 5.25.0
- Java version: 25
- Frameworks: Spring Boot 4.0.4 & 3.5.12
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report
When configuring
com.azure.spring:spring-cloud-azure-starter-servicebuswith connection-details via the consumer, processor, and/or the producer and NOT via the top-level key, auto-configuration fails.Exception or Stack Trace
To Reproduce
Steps to reproduce the behavior:
RCA
In the previous versions,
com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfigurationdefined the following bean ifspring.cloud.azure.servicebus.enabledis true or missing completely.In the new versions (5.25.0 and 7.1.0),
AzureServiceBusAutoConfigurationimportsAzureServiceBusPropertiesConfigurationwhich in turn imports the newly introducedcom.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.ConfigurationWithoutConnectionDetailsBeanthat defines this bean:but
ConfigurationWithoutConnectionDetailsBeanis considered only if:in the use case above, only
spring.cloud.azure.servicebus.processor.connection-stringandspring.cloud.azure.servicebus.producer.connection-stringare set, soAzureServiceBusPropertiesis not created.Workaround
Replace the consumer or processor connection-string (i.e.
spring.cloud.azure.servicebus.processor.connection-string) with the top level one (i.e.spring.cloud.azure.servicebus.connection-string):Setup (please complete the following information):
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report