Hi, Spring fans! It's been a few months since we last chatted! It feels like it's been an era, but it's only been a couple of months, but boy have I been busy in that time!
First, I've been traveling. I went to Austin, Texas, for the new Kafka Summit. I went to Antwerp, Belgium, for the first installment of Devoxx, Belgium, in 2019. I went to Las Vegas, Nevada, for the first JavaOne since 2017. I went to Malaysia, Thailand, and Singapore for customer meetings and public events, including one hosted by the amazing Developer Kaki community in Kuala Lumpur, Malaysia. And I just got back last night from Seattle, Washington, for the Seattle Java User Group there. Along the way, I met many friends, had amazing food, and – unfortunately – got a really bad flu. I checked: it wasn't COVID. But it was something. Yuck. I'm still congested, almost three weeks later! Sigh. I suppose it could be worse. But that's just not the kinda thing that should be open-sourced. Either way, all in all, I had a ton and am so grateful for the opportunity.
I suppose that's key, isn't it? Next week, here in the United States, it'll be Thanksgiving, a day in which we're supposed to take time to be thankful for the everyday good fortunes we share. Speaking for the Spring team, I'm sure, we are grateful for you, dear reader. It goes without saying, but it shouldn't: you're awesome, and we appreciate you.
The community makes Spring, with its many contributions, amazing ideas, pull requests, issues, Gitter.im conversations, Stack Overflow questions, Twitter comments, etc.: Spring is a living breathing thing and it exhales everytime the community inhales. Thank you.
I'm writing this on the 17th of November, 2022, and just yesterday we – the Spring community – reached a wonderful milestone: we shipped Spring Framework 6.0! This release – the first major new generation of Spring since Spring Framework 5.0 released in September, 2017 – is a huge new release. In no particular order, here are some of the amazing new features and themes in the release.
- preliminary support for CRaC (Coordinated Restore at Checkpoint) – this initiative lead by Azul Systems is designed to specify a standardized mechanism whereby JVM applications can passivate and rehydrate their state to dramatically boost startup time.
- want to use Project Loom? We've enabled some extension points in Spring Framework in anticipation of a GA version of Project Loom.
- Java 17 is the new baseline revision required to use Spring Framework 6. This is a huge opportunity!
- Jakarta EE 9 and 10 are now supported throughout the Spring portfolio projects. Finally, at long last, we can look forward to improvements in Jakarta EE, now that the great package migration (from
javax.*
tojakarta.*
) is in the rearview mirror! - A huge theme in Spring Framework 6 and across the entire portfolio is the new support for GraalVM, provided by our ahead-of-time engine. This engine means there's a new phase in your typical Spring Boot application's lifecycle: compile time. You can build applications that startup in tens of milliseconds and – most valuably – take less than a hundred megabytes of RAM for everything: your application, the libraries it uses, the JRE, and even the various libraries being linked and loaded (and shared!) from the operating system. This is a huge deal! Imagine being able to deploy your Spring Boot application for 1/10th or 1/20th of the current footprint and corresponding costs! It's a win-win.
- Don't know whether to use Spring Cloud Square Retrofit, Sprign Cloud Openfeign, or Sprign Retrosocket? Just want a simple, concise, interface-based mechanism for creating declarative HTTP and RSocket clients? Look no further than Spring Framework 6 where the abstraction lives in Spring Framework itself.
- Want a consistent way to represent errors in your HTTP APIs? The Problem Details for HTTP APIs RFC can help, and Spring Framework supports it for both Spring MVC and Spring Webflux applications.
- Spring Framework 6 sports integration with the new Micrometer Tracing module; you no longer need to use Spring Cloud Sleuth. This means that there's now one abstraction, that sits below Spring Framework, for both metrics and distributed tracing. In addition, there's a new
Observation
abstraction that provides a consistent, unified approach to both metrics and distributed tracing.
And I haven't even begun to cover some of the smaller details. Either way, there's a lot of cool stuff here. Get the bits in the usual spot: start.spring.io!
And, best part? Next week we will release Spring Boot 3, which builds on Spring Framework, on Thanksgiving day! There really is a lot to be thankful for 🙂 Happy thanksgiving!
And with that, let's dive into this month's roundup!
- Did you see the new Reactor 2022.0.0 release? This release contains integration with Micrometer Tracing, context propagation, and plenty of other improvements. See this for more.
- Spring Boot 3.0.0-RC2 available now
- Spring Cloud 2021.0.5 (codename Jubilee) Has Been Released
- Spring Framework 6.0.0-RC4 available now
- Spring Security 6.0.0-RC2 is available now
- Updates on Spring Cloud Stream 4.0.0 Schema Registry Support
- Coming with the RC of Spring Modulith: improved module canvas listing cross-module bean references (first image) and publicly exposed value types (second image).
- Kong Ingress Controller with Spring Boot
- Mocking a Singleton With Mockito
- Did you know that Jetbrains has a Spotify playlist of music designed for coding called "Pure Flow"? I like it!
- Spring @EnableMethodSecurity Annotation
- SpringRunner vs MockitoJUnitRunner
- A Bootiful Podcast: Java Champion, legend, and prolific open source contributor Andres Almiray
- CVE Report Published for Spring Tools
- Can a Java Application Use More Memory than the Heap Size?
- JUnit – Testing Methods That Call System.exit()
- Spring Authorization Server 0.4.0-RC1 available now
- Spring Authorization Server 1.0.0-RC1 available now
- Spring Data 2022.0.0-RC2 available
- Spring Modulith 0.1 M2 released
- Automated Code Migrations With Spring Boot Migrator | Fabian Krueger (EN)
- Bootiful Podcast: Spring Mad Scientist Andy Clement on SpringOne 2022, AOT, Azure Spring Apps, and more
- How to Access the First Element of a Flux
- I wondered out loud if anybody heard elevaor music when they were waiting for their GraalVM compiles to finish. Then this happened. LOL
- Limiting the Requests per Second With WebClient
- Log Properties in a Spring Boot Application
- Interested in how GraalVm will fit into the OpenJDK model? Selectively Shifting and Constraining Computation
- Spring Boot + MyBatis で自作 TypeHandler を使う – Qiita
- Spring Integration 6.0.0-RC1 Available
- Spring Integration の TCP 機能のデシリアライズ時にタイムアウトを指定する – Qiita
- Spring Security, demystified by Daniel Garnier Moiroux
- Spring Tools 4.16.1 released
- Check out my Devoxx UK talk, also voted one of the top videos at Devoxx UK: Spring.next by Josh Long
- TLS Setup in MySQL and Spring Boot Application
- This one is especially important: CVE-2022-31684: Reactor Netty HTTP Server may log request headers
- Deploy Your Spring Boot (Java) Apps To Production In Seconds! – YouTube
- Guide to Simple Binary Encoding
- High Cardinality – DevelOtters.com
- How to Resolve Spring Webflux DataBufferLimitException
- IntelliJ IDEA 2022.2 EAP 5: Support for Spring 6 and Spring Boot 3 Features, Enhanced HTTP Client, Kubernetes Updates and More
- Introducing Spring Modulith
- Spring Batch 5.0 RC1 is out!
- Spring Boot 2.6.13 available now
- Spring Boot 2.7.5 available now
- Spring Boot 3.0.0-RC1 available now
- Spring Boot Best Practices for Developers
- Spring Framework 6.0.0-RC2 available now
- Spring Security 5.7.4 and 5.6.8 available now
- Spring Security 6.0.0-RC1 and 5.8.0-RC1 are released
- Spring Web Services 4.0.0-RC1 is out!
- Spring for GraphQL 1.1.0-RC1 released
- Spring Framework 6.0 goes RC1
- Observability with Spring Boot 3
- A Bootiful Podcast: Google mad scientist Josh Suereth on Observability with OpenTelemetry, building better build tools, and so much more
- Spring Batch 5.0.0-M8 is out!
- Learn more about Spring Framework 6 and Spring Boot 3 in these two great talks from Devoxx 2022
- Spring at JavaOne 2022
- Spring Data 2022.0.0-RC1, 2021.2.5, and 2021.1.8 available
- Spring Security 6.0.0-RC1 and 5.8.0-RC1 are released
- Spring Security 5.7.4 and 5.6.8 available now
- Spring for GraphQL 1.1.0-RC1 released
- Spring Web Services 4.0.0-RC1 is out!
- Spring Tips: Spring Boot & Apache Kafka
- Spring Batch 5.0.0-M7 available now!
- Spring Cloud 2022.0.0-M5 is now available
- Spring Shell 2.1.2 and 3.0.0-M1 are now available
- The State of Spring Survey
- I put the updated code for my latest incarnation of Cloud Native Java – online in Github
cloud-native-java-2022/e2e5
- A Bootiful Podcast: Spring and Java community legend Marten Deinum
- Difference Between
Flux
andMono
in Project Reactor - Hey – Baeldung.com (yes, that Baeldung.com!) is using Spring, and they're looking for a Java Team Lead with Spring Experience (Remote) (Part Time)
- Patterns for Iterating Over Large Result Sets With Spring Data JPA
- JobRunr's already been upgraded to Spring Boot 3 for the JRE – and perhaps Spring Boot 3 AOT support is on the way?
- JMeter: Latency vs. Load Time