AWS Developer Tools Blog
Client Constructors Now Deprecated in the AWS SDK for Java
A couple of weeks ago you might have noticed that the 1.11.84 version of the AWS SDK for Java included several deprecations – the most notable being the deprecation of the client constructors.
Historically, you’ve been able to create a service client as shown here.
This mechanism is now deprecated in favor of using one of the builders to create the client as shown here.
The client builders (described in detail in this post) are superior to the basic constructors in the following ways.
Immutable
Clients created via the builder are immutable. The region/endpoint (and other data) can’t be changed. Therefore, clients are safe to reuse across multiple threads.
Explicit Region
At build time, the AWS SDK for Java can validate that a client has all the required information to function correctly – namely, a region. A client created via the builders must have a region that is defined either explicitly (i.e. by calling withRegion
) or as part of the DefaultAwsRegionProviderChain. If the builder can’t determine the region for a client, an SdkClientException is thrown. Region is an important concept when communicating with services in AWS. It not only determines where your request will go, but also how it is signed. Requiring a region means the SDK can behave predictably without depending on hidden defaults.
Cleaner
Using the builder allows a client to be constructed in a single statement using method chaining.
The deprecated constructors are no longer created for new service clients. They will be removed from existing clients in a future major version bump (although they’ll remain in all future releases of the 1.x family of the AWS SDK for Java).