Mocking is an essential part of unit testing, and the Mockito library makes it easy to write clean and intuitive unit tests for your Java code.
Get started with mocking and improve your application tests using our Mockito guide:
Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.
Get started with understanding multi-threaded applications with our Java Concurrency guide:
Spring 5 added support for reactive programming with the Spring WebFlux module, which has been improved upon ever since. Get started with the Reactor project basics and reactive programming in Spring Boot:
Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.
But these can also be overused and fall into some common pitfalls.
To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:
Get started with Spring and Spring Boot, through the Learn Spring course:
>> LEARN SPRINGExplore Spring Boot 3 and Spring 6 in-depth through building a full REST API with the framework:
Yes, Spring Security can be complex, from the more advanced functionality within the Core to the deep OAuth support in the framework.
I built the security material as two full courses - Core and OAuth, to get practical with these more complex scenarios. We explore when and how to use each feature and code through it on the backing project.
You can explore the course here:
Spring Data JPA is a great way to handle the complexity of JPA with the powerful simplicity of Spring Boot.
Get started with Spring Data JPA through the guided reference course:
Refactor Java code safely β and automatically β with OpenRewrite.
Refactoring big codebases by hand is slow, risky, and easy to put off. Thatβs where OpenRewrite comes in. The open-source framework for large-scale, automated code transformations helps teams modernize safely and consistently.
Each month, the creators and maintainers of OpenRewrite at Moderne run live, hands-on training sessions β one for newcomers and one for experienced users. Youβll see how recipes work, how to apply them across projects, and how to modernize code with confidence.
Join the next session, bring your questions, and learn how to automate the kind of work that usually eats your sprint time.
In the previous article, weβre focusing on S3; now weβll focus on the Elastic Compute Cloud β commonly known as EC2.
β’ Spring Cloud AWS β Messaging Support
1. EC2 Metadata Access
The AWS EC2MetadataUtils class provides static methods to access instance metadata like AMI Id and instance type. With Spring Cloud AWS we can inject this metadata directly using the @Value annotation.
This can be enabled by adding the @EnableContextInstanceData annotation over any of the configuration classes:
@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
//
}
In a Spring Boot environment, instance metadata is enabled by default which means this configuration is not required.
Then, we can inject the values:
@Value("${ami-id}")
private String amiId;
@Value("${hostname}")
private String hostname;
@Value("${instance-type}")
private String instanceType;
@Value("${services/domain}")
private String serviceDomain;
1.1. Custom Tags
Additionally, Spring also supports injection of user-defined tags. We can enable this by defining an attribute user-tags-map in context-instance-data using the following XML configuration:
<beans...>
<aws-context:context-instance-data user-tags-map="instanceData"/>
</beans>
Now, letβs inject the user-defined tags with the help of Spring expression syntax:
@Value("#{instanceData.myTagKey}")
private String myTagValue;
2. EC2 Client
Furthermore, if there are user tags configured for the instance, Spring will create an AmazonEC2 client which we can inject into our code using @Autowired:
@Autowired
private AmazonEC2 amazonEc2;
Please note that these features work only if the app is running on an EC2 instance.
3. Conclusion
This was a quick and to-the-point introduction to accessing EC2d data with Spring Cloud AWS.
In the next article of the series, weβll explore the RDS support.
