Skip to content

Commit 20f4d41

Browse files
Do not create S3 CRT client if aws-crt library is not on the classpath. (#1359)
Fixes #1358
1 parent 2439fe9 commit 20f4d41

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfiguration.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.context.annotation.Bean;
3434
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
3535
import software.amazon.awssdk.crt.s3.S3Client;
36+
import software.amazon.awssdk.http.crt.AwsCrtHttpClient;
3637
import software.amazon.awssdk.services.s3.S3AsyncClient;
3738
import software.amazon.awssdk.services.s3.S3CrtAsyncClientBuilder;
3839

@@ -44,7 +45,7 @@
4445
* @since 3.0
4546
*/
4647
@AutoConfiguration
47-
@ConditionalOnClass({ S3Client.class, S3AsyncClient.class })
48+
@ConditionalOnClass({ S3Client.class, S3AsyncClient.class, AwsCrtHttpClient.class})
4849
@EnableConfigurationProperties({ S3Properties.class })
4950
@ConditionalOnProperty(name = "spring.cloud.aws.s3.enabled", havingValue = "true", matchIfMissing = true)
5051
@AutoConfigureBefore(S3TransferManagerAutoConfiguration.class)

spring-cloud-aws-autoconfigure/src/test/java/io/awspring/cloud/autoconfigure/s3/S3CrtAsyncClientAutoConfigurationTests.java

+9
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
3232
import software.amazon.awssdk.core.client.config.SdkClientOption;
3333
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
34+
import software.amazon.awssdk.http.crt.AwsCrtHttpClient;
3435
import software.amazon.awssdk.services.s3.S3AsyncClient;
3536
import software.amazon.awssdk.services.s3.endpoints.S3ClientContextParams;
3637
import software.amazon.awssdk.services.s3.internal.crt.S3NativeClientConfiguration;
@@ -117,6 +118,14 @@ void handlesMissingS3AsyncClient() {
117118
});
118119
}
119120

121+
@Test
122+
void handlesMissingS3CrtLibrary() {
123+
contextRunner.withClassLoader(new FilteredClassLoader(AwsCrtHttpClient.class)).run(context -> {
124+
assertThat(context).hasNotFailed();
125+
assertThat(context).doesNotHaveBean(S3AsyncClient.class);
126+
});
127+
}
128+
120129
private static S3NativeClientConfiguration s3NativeClientConfiguration(S3AsyncClient client) {
121130
ConfiguredAwsClient configuredClient = new ConfiguredAwsClient(client);
122131
SdkAsyncHttpClient sdkAsyncHttpClient = configuredClient.getAsyncHttpClient();

0 commit comments

Comments
 (0)