Skip to content

Commit 1dfb4c9

Browse files
committed
Polish "Add a customizer for Lettuce's ClientOptions"
See gh-40484
1 parent c517664 commit 1dfb4c9

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceClientConfigurationBuilderCustomizer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,7 +23,9 @@
2323
* Callback interface that can be implemented by beans wishing to customize the
2424
* {@link LettuceClientConfiguration} through a {@link LettuceClientConfigurationBuilder
2525
* LettuceClientConfiguration.LettuceClientConfigurationBuilder} whilst retaining default
26-
* auto-configuration.
26+
* auto-configuration. To customize only the
27+
* {@link LettuceClientConfiguration#getClientOptions() client options} of the
28+
* configuration, use {@link LettuceClientOptionsBuilderCustomizer} instead.
2729
*
2830
* @author Mark Paluch
2931
* @since 2.0.0

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceClientOptionsBuilderCustomizer.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -17,21 +17,26 @@
1717
package org.springframework.boot.autoconfigure.data.redis;
1818

1919
import io.lettuce.core.ClientOptions;
20+
import io.lettuce.core.ClientOptions.Builder;
21+
22+
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
2023

2124
/**
2225
* Callback interface that can be implemented by beans wishing to customize the
23-
* {@link ClientOptions} through a {@link ClientOptions.Builder} whilst retaining default
24-
* auto-configuration.
26+
* {@link ClientOptions} of the {@link LettuceClientConfiguration} through a
27+
* {@link Builder} whilst retaining default auto-configuration. To customize the entire
28+
* configuration, use {@link LettuceClientConfigurationBuilderCustomizer} instead.
2529
*
2630
* @author Soohyun Lim
31+
* @since 3.4.0
2732
*/
2833
@FunctionalInterface
2934
public interface LettuceClientOptionsBuilderCustomizer {
3035

3136
/**
32-
* Customize the {@link ClientOptions.Builder}.
37+
* Customize the {@link Builder}.
3338
* @param clientOptionsBuilder the builder to customize
3439
*/
35-
void customize(ClientOptions.Builder clientOptionsBuilder);
40+
void customize(Builder clientOptionsBuilder);
3641

3742
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ LettuceConnectionFactory redisConnectionFactory(
9191
ObjectProvider<LettuceClientConfigurationBuilderCustomizer> clientConfigurationBuilderCustomizers,
9292
ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientOptionsBuilderCustomizers,
9393
ClientResources clientResources) {
94-
return createConnectionFactory(clientConfigurationBuilderCustomizers, clientOptionsBuilderCustomizers, clientResources);
94+
return createConnectionFactory(clientConfigurationBuilderCustomizers, clientOptionsBuilderCustomizers,
95+
clientResources);
9596
}
9697

9798
@Bean
@@ -101,7 +102,8 @@ LettuceConnectionFactory redisConnectionFactoryVirtualThreads(
101102
ObjectProvider<LettuceClientConfigurationBuilderCustomizer> clientConfigurationBuilderCustomizers,
102103
ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientOptionsBuilderCustomizers,
103104
ClientResources clientResources) {
104-
LettuceConnectionFactory factory = createConnectionFactory(clientConfigurationBuilderCustomizers, clientOptionsBuilderCustomizers, clientResources);
105+
LettuceConnectionFactory factory = createConnectionFactory(clientConfigurationBuilderCustomizers,
106+
clientOptionsBuilderCustomizers, clientResources);
105107
SimpleAsyncTaskExecutor executor = new SimpleAsyncTaskExecutor("redis-");
106108
executor.setVirtualThreads(true);
107109
factory.setExecutor(executor);
@@ -112,8 +114,8 @@ private LettuceConnectionFactory createConnectionFactory(
112114
ObjectProvider<LettuceClientConfigurationBuilderCustomizer> clientConfigurationBuilderCustomizers,
113115
ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientOptionsBuilderCustomizers,
114116
ClientResources clientResources) {
115-
LettuceClientConfiguration clientConfig = getLettuceClientConfiguration(clientConfigurationBuilderCustomizers, clientOptionsBuilderCustomizers,
116-
clientResources, getProperties().getLettuce().getPool());
117+
LettuceClientConfiguration clientConfig = getLettuceClientConfiguration(clientConfigurationBuilderCustomizers,
118+
clientOptionsBuilderCustomizers, clientResources, getProperties().getLettuce().getPool());
117119
return createLettuceConnectionFactory(clientConfig);
118120
}
119121

@@ -167,7 +169,8 @@ private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurati
167169
}
168170
}
169171

170-
private ClientOptions createClientOptions(ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientConfigurationBuilderCustomizers) {
172+
private ClientOptions createClientOptions(
173+
ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientConfigurationBuilderCustomizers) {
171174
ClientOptions.Builder builder = initializeClientOptionsBuilder();
172175
Duration connectTimeout = getProperties().getConnectTimeout();
173176
if (connectTimeout != null) {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ void testCustomizeRedisConfiguration() {
127127
this.contextRunner.withUserConfiguration(CustomConfiguration.class).run((context) -> {
128128
LettuceConnectionFactory cf = context.getBean(LettuceConnectionFactory.class);
129129
assertThat(cf.isUseSsl()).isTrue();
130-
cf.getClientConfiguration().getClientOptions().ifPresent(options ->
131-
assertThat(options.isAutoReconnect()).isFalse());
130+
assertThat(cf.getClientConfiguration().getClientOptions())
131+
.hasValueSatisfying((options) -> assertThat(options.isAutoReconnect()).isFalse());
132132
});
133133
}
134134

@@ -642,7 +642,7 @@ LettuceClientConfigurationBuilderCustomizer customizer() {
642642

643643
@Bean
644644
LettuceClientOptionsBuilderCustomizer clientOptionsBuilderCustomizer() {
645-
return builder -> builder.autoReconnect(false);
645+
return (builder) -> builder.autoReconnect(false);
646646
}
647647

648648
}

0 commit comments

Comments
 (0)