Hi, Spring fans! Welcome to another wonderful, fanciful installment of This Month in Spring! It's been a busy month since we last spoke! I spoke at the Kotlin and Java User groups in Chicago with my friend and Gradle CTO Justin Reock. I spoke at Kotlin Conf in Amsterdam with my friend and Google Kotlin Program Manager James Ward. I spoke at Devoxx France. I spoke at the Great International Developer Summit in Bangalore, India. I was just this last weekend at the first Devoxx GR, in the sunny Mediterranean city of Athens, Greece. Uh, yah, this was a good'un, by the way. If you can get to it, you should. (Don't miss next year's installment if you missed this one!) And now, I'm in London, for one of my all-time favorite shows, Devoxx UK. (Are you going to Devoxx UK? Come find me! I'll be talking about Spring Boot 3, and it should be fun.) After this, I'm off to Germany where I may be appearing at a JUG near Wolfsburg (I'll keep you posted). Then, it's off to Spring IO in beautiful Barcelona, which is sure to be a ton of fun. Seriously, if you get one show in Western Europe, make it this one. And then, finally, it's off to ITKonekt in Belgrade. If you're in any of those places, come find me! We'll bring some Spring and have some fun along the way.
Friends, we've got a whole host of things to get to this month, so let's dive right into it!
- Spring Boot 3.1.0-RC2 available now The latest-and-greatest in our journey to Spring Boot 3.1 is here.
- Another fantastic article by Vlad Mihalcea on Hibernate and Spring Data JPA entity locking
- The Spring Framework docs just got a major upgrade! Check it out! Spring Framework Documentation :: Spring Framework
- Spring Shell 2.1.9, 3.0.3 and 3.1.0-RC1 are now available
- Exciting news! Spring Boot has officially reached a milestone of a thousand contributors! Thanks to the amazing community of developers who have contributed their time and expertise to make Spring Boot better!
- A Bootiful Podcast: Java Champion Ken Kousen on Gradle, Java, Kotlin, Mockito, and more
- I love this An Incomplete Guide to Modern Java I/O Idioms by legendary Java Champion Cay Horstman
- Encode Passwords With Spring Boot CLI
- Enhanced pattern-matching will be in Java 21 (JEP 441)!
- This was a good French-language talk introducing some of the foundational knowledge – the core abstractions and patterns – in the Spring Framework: Les secrets internes de Spring (Carl Azoury)
- I love Thomas Vitale's blog looking at how to use Podman to replace Docker Desktop: Podman Desktop for Java Development
- Have you learned about Scoped values in scoped values in Java 20, which will be useful in the structured concurrency afforded by Project Loom
- This is a weird, and interesting topic: how can a bean inject a reference to itself in Spring? I confess I've never really thought about this and I loved this discussion.
- Spring Boot H2 JdbcSQLSyntaxErrorException expected “identifier”
- A Bootiful Podcast: Sebastien Deleuze and James Ward on a Bootiful Podcast
- Interesting insight on how, if you're not careful with Kotlin coroutines (Spring Boot or not), you can scale to great heights and possibly DoS yourself! How We Accidentally DoS-ed Ourselves with Kotlin Coroutines
- Introduction to Spring Modulith
- James Ward makes a great point: the Thoughtworks Tech Radar now says folks should Adopt the Kotlin DSL for Gradle
- Release Version 0.8.1 · redis/redis-om-spring
- Running one-time jobs with Quartz and Spring Boot
- Spring Cloud 2021.0.7 (aka Jubilee) has been released
- Spring Security Kerberos 2.0.0-M1 available now
- Using OpenAI ChatGPT APIs in Spring Boot
- Working with Virtual Threads in Spring 6
- A Guide to FlexyPool
- Spring Boot 3.1.0-RC1 available now
- One of the most exciting new features in Spring Boot 3.1 RC1 is the new support for Testcontainers and Docker Compose at development time. I did a video introducing these new features here
- Spring Boot 2.7.11 available now fixing CVE-2023-20873
- Spring Boot 3.0.6 available now fixing CVE-2023-20873
- Spring Boot Debugging with Aspect-Oriented Programming (AOP)
- Spring for GraphQL 1.2.0-RC1 released
- krud-dev/boost: Boost is a desktop application that provides various features to monitor and interact with Spring Boot Applications via Actuator.
- Speaking of the Boost desktop application, I did a Youtube video introducing it here
- Cancel an Ongoing Flux in Spring WebFlux
- Difference Between th:text and th:value in Thymeleaf
- Execute Tests Based on Active Profile With JUnit 5
- Java Basics – Spring Boot Single Page Application (SPA) | Learn Java
- Want to learn how Grubhub is using Spring Boot (and Kotlin)? Check out this fascinating discussion with Platform Engineer John Burns
- A Bootiful Podcast: Sonatype's Steve Poole and Gradle's Justin Reock on Improving Developer Productivity without compromising on things like security
- Spring Authorization Server 1.0.2 and 0.4.2 available now
- Upgrade to the latest and greatest in Spring Data, because it's good for you: Spring Data 2023.0-RC1 and Service Releases 2022.0.5 & 2021.2.11 released
- Spring Shell 2.1.8, 3.0.2 and 3.1.0-M2 are now available
- A Guide to @Timeout Annotation in JUnit 5
- Best practices for managing Java dependencies
- I love the new pod topology constraint support in Kubernetes 1.27. Blog: Kubernetes 1.27: More fine-grained pod topology spread policies reached beta Also: hello, everyone at Kubecon 2023!
- My colleague, friend, and industry legend Toshiaki Maki wrote a fantastic blog looking at the ways you can create a custom workload with Cartographer and the Tanzu Application Platform, a Kubernetes distribution to create a
CronJob
workload. This could be ideal for Spring Batch workloads. - Integrate AWS Secrets Manager in Spring Boot
- Kotlin DSL is Now the Default for New Gradle Builds
- It's super cool that you can do this, but – and I can not stress this enough – don't do this. Loading Multiple YAML Configuration Files in Spring Boot
- Learna bout the Spring Boot Actuator endpoint for Resilience4j
- An oldie but a good looking at various interesting opportunities for RabbitMQ developers: Supercharging services architectures with RabbitMQ | Stanko K.R.
- Not related to Spring, per se, but: Use Mapper in Another Mapper with Mapstruct and Java
- Using Kotlin Type Aliases To Automate Microservice Integration with Marty Pitt – Brighton Kotlin
- Get All Cached Keys with Caffeine Cache in Spring Boot
- Want to learn the nitty gritty of using Spring Cloud's Azure Key Vault integration? Check out this guide on the Baeldung blog: A Guide to Spring Cloud Azure Key Vault
- Context Propagation with Project Reactor 1 – The Basics
- Context Propagation with Project Reactor 2 – The bumpy road of Spring Cloud Sleuth
- Context Propagation with Project Reactor 3 – Unified Bridging between Reactive and Imperative
- Is There an Equivalent of Spring Boot for Kotlin? (Yes. Also: Sébastien Deleuze works like a "Greek hero")
- Did you know that Spring has a ton of helpful utility methods? Check out this oldie-but-a-goodie Spring Tips video I did
- URL Matching in Spring Boot 3 looks at the potentially breaking change in the behavior of trailing slash matching in Spring MVC and Spring Webflux URI paths. Option 4 is the best way to go
- Check out the quickstart guide for Azure Spring Apps, the cloud platform-as-a-service co-developed by Microsoft and the Spring team
- Did you know the good folks from Jetbrains have a few fantastic Spotify playlists: Code Like It's the 80s , Adrenaline Coding, and Pure Flow Coding? I listen to them all the time.
- The new TIOBE language index is out. Java has maintained its normal place; there's a bit of an upset in the inclusion of the Zig programming language, a would-be C++ successor, in the roundup. Kotlin is
- I did a talk for the good folks over at Jetbrains on Spring Boot 3 and some folks seem to like it
- Want a great free resource to learn Spring? Check out the Spring.academy!