With the release of Spring Boot 3.1, the Spring team introduced a neat support to start all required containers for your application by a single Docker-Compose script that can be checked in with your application. Docker-Compose is a technology that can start multiple Docker containers with a given set of parameters by one single command…
Spring Boot 3.2 is now GA and we got another nice way to call relational databases by JDBC: The JdbcClient. Historically, the Spring framework used the JdbcTemplate class to access relational databases through SQL statements. The JdbcTemplate has a large number of (overloaded) methods that cover almost any case to execute an SQL statement. However,…
With the release of Spring Boot 3, Spring Batch 5 was released as well, which includes some interesting new features. The probably most important one is the ability to create native executables and images from your Spring Batch 5 applications. These will require less memory, have a faster startup time and will run a lot…
Spring Boot 3.2 is available on the Spring Initializr and we got a brand new way to call http endpoints with it: The new RestClient. You might ask yourself why the Spring team released another way to make http calls in addition to the three ways we already have in our toolbox. Let’s have a…
The Testcontainers framework is a great tool to help you write integration tests for your Spring Boot applications. You can easily start all dependencies of your application, like a database, a web server or a message broker. The Testcontainers framework let’s you specify these dependencies as code that can be checked in and makes it…
Spring Boot 3 finally integrated the Spring Native project into the core framework, giving you the option to compile your application to a native executable. The Spring team also worked hard on making most available Spring-Boot starters compatible with the new native compile option. This means that you can now compile your application natively without…
With Java 20 released, Project Amber further iterated on Record Patterns with JEP 432, the second preview of this new feature. This time they implemented support for record patterns in the enhanced for loop. If you don’t know what record patterns are, just check out my previous post about the topic, which explains this new…
Java 20 has been released in mid of March and Project Loom brought us Scoped Values as a new incubator feature with it, which is supplementing the previously released Virtual-Threads and Structured Concurrency preview features. Scoped Values are meant to replace and enhance the ancient ThreadLocal variables, introduced in Java 1.2 about 25 years ago.…
With Spring 6 and Spring Boot 3 released, we got some nice additions to the Spring Actuator module that make sure that monitoring our application will be fully compatible with Micrometer. Micrometer is a facade API that let’s us specify metrics and other data we want to observe in our application and makes sure that…
One of the most common developer tasks in today’s day to day business is writing http clients to query data from REST web services. Traditionally, this is done with the Spring Framework by using either the RestTemplate or the reactive WebClient to call the http methods of a service and transform the result into a…