Skip to content

Commit 3e24920

Browse files
authored
Fix Redis Lettuce passwordless auto-config bean collision (#49293)
1 parent ad5fe18 commit 3e24920

3 files changed

Lines changed: 28 additions & 5 deletions

File tree

sdk/spring/CHANGELOG.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
# Release History
22
## 7.4.0-beta.1 (Unreleased)
33

4-
### Features Added
4+
### Spring Cloud Azure Autoconfigure
55

6-
### Breaking Changes
6+
This section includes changes in `spring-cloud-azure-autoconfigure` module.
77

8-
### Bugs Fixed
8+
#### Features Added
99

10-
### Other Changes
10+
#### Breaking Changes
11+
12+
#### Bugs Fixed
13+
14+
- Fixed Redis Lettuce passwordless autoconfiguration so a user-defined `LettuceClientConfigurationBuilderCustomizer` no longer suppresses the Azure customizer bean that configures Azure Redis credentials and RESP2 support.
15+
16+
#### Other Changes
1117

1218
## 7.3.0 (2026-05-27)
1319
- This release is compatible with Spring Boot 4.0.0-4.0.6. (Note: 4.0.x (x>6) should be supported, but they aren't tested with this release.)

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ AzureRedisCredentials azureRedisCredentials(DataRedisProperties redisProperties,
5959
}
6060

6161
@Bean(name = "azureLettuceClientConfigurationBuilderCustomizer")
62-
@ConditionalOnMissingBean
62+
@ConditionalOnMissingBean(name = "azureLettuceClientConfigurationBuilderCustomizer")
6363
LettuceClientConfigurationBuilderCustomizer azureLettuceClientConfigurationBuilderCustomizer(AzureRedisCredentials azureRedisCredentials) {
6464
return builder -> builder.redisCredentialsProviderFactory(new RedisCredentialsProviderFactory() {
6565

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfigurationTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.lettuce.core.RedisCredentials;
99
import org.junit.jupiter.api.Test;
1010
import org.springframework.boot.autoconfigure.AutoConfigurations;
11+
import org.springframework.boot.data.redis.autoconfigure.LettuceClientConfigurationBuilderCustomizer;
1112
import org.springframework.boot.test.context.FilteredClassLoader;
1213
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
1314
import org.springframework.data.redis.connection.lettuce.LettuceConnection;
@@ -75,4 +76,20 @@ void configureWithPasswordlessEnabled() {
7576
});
7677
}
7778

79+
@Test
80+
void configureWithUserDefinedLettuceCustomizer() {
81+
this.contextRunner
82+
.withBean("userLettuceClientConfigurationBuilderCustomizer", LettuceClientConfigurationBuilderCustomizer.class,
83+
() -> builder -> { })
84+
.withPropertyValues(
85+
"spring.data.redis.azure.passwordless-enabled=true",
86+
"spring.data.redis.host=localhost",
87+
"spring.data.redis.username=azure-username"
88+
)
89+
.run(context -> {
90+
assertThat(context).hasBean("azureLettuceClientConfigurationBuilderCustomizer");
91+
assertThat(context.getBeansOfType(LettuceClientConfigurationBuilderCustomizer.class)).hasSize(2);
92+
});
93+
}
94+
7895
}

0 commit comments

Comments
 (0)