@@ -88,29 +88,32 @@ DefaultClientResources lettuceClientResources(ObjectProvider<ClientResourcesBuil
8888	@ ConditionalOnMissingBean (RedisConnectionFactory .class )
8989	@ ConditionalOnThreading (Threading .PLATFORM )
9090	LettuceConnectionFactory  redisConnectionFactory (
91- 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
91+ 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
92+ 			ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
9293			ClientResources  clientResources ) {
93- 		return  createConnectionFactory (builderCustomizers , clientResources );
94+ 		return  createConnectionFactory (clientConfigurationBuilderCustomizers ,  clientOptionsBuilderCustomizers , clientResources );
9495	}
9596
9697	@ Bean 
9798	@ ConditionalOnMissingBean (RedisConnectionFactory .class )
9899	@ ConditionalOnThreading (Threading .VIRTUAL )
99100	LettuceConnectionFactory  redisConnectionFactoryVirtualThreads (
100- 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
101+ 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
102+ 			ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
101103			ClientResources  clientResources ) {
102- 		LettuceConnectionFactory  factory  = createConnectionFactory (builderCustomizers , clientResources );
104+ 		LettuceConnectionFactory  factory  = createConnectionFactory (clientConfigurationBuilderCustomizers ,  clientOptionsBuilderCustomizers , clientResources );
103105		SimpleAsyncTaskExecutor  executor  = new  SimpleAsyncTaskExecutor ("redis-" );
104106		executor .setVirtualThreads (true );
105107		factory .setExecutor (executor );
106108		return  factory ;
107109	}
108110
109111	private  LettuceConnectionFactory  createConnectionFactory (
110- 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
112+ 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
113+ 			ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
111114			ClientResources  clientResources ) {
112- 		LettuceClientConfiguration  clientConfig  = getLettuceClientConfiguration (builderCustomizers ,  clientResources ,
113- 				getProperties ().getLettuce ().getPool ());
115+ 		LettuceClientConfiguration  clientConfig  = getLettuceClientConfiguration (clientConfigurationBuilderCustomizers ,  clientOptionsBuilderCustomizers ,
116+ 				clientResources ,  getProperties ().getLettuce ().getPool ());
114117		return  createLettuceConnectionFactory (clientConfig );
115118	}
116119
@@ -125,16 +128,17 @@ private LettuceConnectionFactory createLettuceConnectionFactory(LettuceClientCon
125128	}
126129
127130	private  LettuceClientConfiguration  getLettuceClientConfiguration (
128- 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
131+ 			ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
132+ 			ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
129133			ClientResources  clientResources , Pool  pool ) {
130134		LettuceClientConfigurationBuilder  builder  = createBuilder (pool );
131135		applyProperties (builder );
132136		if  (StringUtils .hasText (getProperties ().getUrl ())) {
133137			customizeConfigurationFromUrl (builder );
134138		}
135- 		builder .clientOptions (createClientOptions ());
139+ 		builder .clientOptions (createClientOptions (clientOptionsBuilderCustomizers ));
136140		builder .clientResources (clientResources );
137- 		builderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
141+ 		clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
138142		return  builder .build ();
139143	}
140144
@@ -163,7 +167,7 @@ private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurati
163167		}
164168	}
165169
166- 	private  ClientOptions  createClientOptions () {
170+ 	private  ClientOptions  createClientOptions (ObjectProvider < LettuceClientOptionsBuilderCustomizer >  clientConfigurationBuilderCustomizers ) {
167171		ClientOptions .Builder  builder  = initializeClientOptionsBuilder ();
168172		Duration  connectTimeout  = getProperties ().getConnectTimeout ();
169173		if  (connectTimeout  != null ) {
@@ -183,7 +187,9 @@ private ClientOptions createClientOptions() {
183187			}
184188			builder .sslOptions (sslOptionsBuilder .build ());
185189		}
186- 		return  builder .timeoutOptions (TimeoutOptions .enabled ()).build ();
190+ 		builder .timeoutOptions (TimeoutOptions .enabled ());
191+ 		clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
192+ 		return  builder .build ();
187193	}
188194
189195	private  ClientOptions .Builder  initializeClientOptionsBuilder () {
0 commit comments