Hello, my friends! What a crazy month it's been since we last spoke, and what a crazy month it will be when we next speak!
We released Spring Boot 3.1 on May 18th, 2023. This release coincided with Spring IO in Barcelona, Spain. It was a ton of fun, and we announced many amazing new things, including preliminary support for CraC and Project Loom in the next versions of Spring Framework and Spring Boot (6.2 and 3.2). The new release brings all the usual niceties, including new dependencies and a bevy of amazing new developer-time features. Here are some of my favorites:
- Built in Docker Compose support – Have a
docker-compose.yml
in your project root? Addspring-boot-docker-compose
asdevelopmentOnly
scope in Gradle oroptinal
in Maven and Spring Boot will automatically run it for you on startup and shut it down on application shutdown. Here's an example - Built in Testcontainers support – You know Spring Boot has first class support for Testcontainers in our unit testing framework. Perhaps you've used the
@DynamicPropertySource
mechanism to configure the environment based on Testcontainer containers? – but this new release makes things even better. Define a test-code onlymain(String [])
method and then forward it to your production codemain(String [] args)
methods. You can point that test-code only main class to new@Configuration
classes, which may in turn have Testcontainer connections defined. Run that test-code onlymain
method and Spring Boot will start that Testcontainer for you during development. You can use Devtools to fast reload code changes. You can use Devtools'@RestartScope
to keep the container open across reloads, too! Now you've got the ultimate ingit clone
and run-able code! Here's an example. - Unified SSL support across the framework – Spring Boot supports SSL in all the various configured integrations where it is available, but the support for SSL was inconsistent. In the new version of Spring Boot 3.1, there is a new type called
SslBundle
that describes the common keys and certificates in a unified way that you can then plugin to various HTTP servers, clients, data access technologies, etc. Here are the docs where you can learn even more - And, to make this new Testcontainer support even better, we just debuted new support for code-generating your Testcontainers-ready test
main(String[])
method on the Spring Initializr!
I started May in Europe, speaking at shows and to groups in Athens, Greece; London, UK; Berlin, Germany; Barcelona, Spain; and Belgrade, Serbia. It was an amazing three week tour!
While it was sad to see it end, I was glad to get home because I got to see my daughter graduate high school! What a journey it's been for her, and it's only the first step in a long series of steps as she begins her adult life, starting college in the fall. I'm so very proud of her.
Tomorrow, the 9th of June, we begin a two-month tour of Asia where I'll be visiting organizations and giving public presentations at various places, including Singapore, Seoul, Taipei, Tokyo (location and date TBD..), Sydney, Kuala Lumpur, Jakarta, and more. You can find the still-in-flux details on my site, of course, as we add more stops and firm up the details of existing ones.
It will be a fun, exhausting tour, but the cherry on top is when I come back and see my daughter off to college and attend the first in-person SpringOne, being held coincident with VMware Explore in sunny Las Vegas! Have you registered yet?
My friends, there's a lot to get into this month, so let's dive right into it!
- A Bootiful Podcast: Spring Boot team member Moritz Halbritter (@m_halbritter)
- Spring Boot Properties Prefix Must Be in Canonical Form
- Dimas Adriyanto Setyawan has a nice blog looking at the new Docker Compose support in Spring Boot 3.1
- Jetbrains Getting Started with Spring Boot and Kotlin page has been nicely updated
- With a title like this, how could you not read?? How to use ChatGPT/OpenAI APIs from Oracle Backend for Spring Boot/Parse.
- The Difference Between findById and getById in Spring Data
- I'll be speaking in Sydney, Australia . Come out and join me?
- I'll be speaking in Taipei. Come out and join me?
- Thomas Schuehly just released v0.5.4 of Spring ViewComponent
- I love this: a deep-ish review of some of the various Spring
ApplicationEvent
s: nice job, Truong Bui! - Interesting: how to locally test GCP Firestore and Spring
- Spring Authorization Server is on Spring Initializr! This is my favorite technical news of the week, by far! I loved it so much that I even invited its author, Steve Riesenberg, on my little show. He and I (well, mostly him) did an awesome live demo setting up an Authorization Server, a Resource server, and OAuth OIDC client with login support. We did it all from scratch using Spring Boot 3.1, too! Check this out!
- Spring Cloud 2022.0.3 (aka Kilburn) Is Available
- A Bootiful Podcast: Java Developer Advocate Billy Korando on the latest and greatest in Java
- Spring Shell 2.1.10, 3.0.4 and 3.1.0 are now available
- Unleash Spring apps in a flex environment with Azure Spring Apps Consumption and Dedicated plans
- Configuring Gradle Tasks in Spring Boot 3
- Securing Spring Boot API With API Key and Secret
- Spring Boot Actuator Without Spring Boot
- Spring Security Kerberos 2.0.0-RC2 available now
- Our friends at Axon did a profile on me. You might like it: Spring and Axon with Josh Long
- Write Console Output to Text File in Java
- Hey Taiwan, I'll be at the Taipei JUG on July 16th! 偉康科技 x TWJUG Bootiful Spring Boot 3 免費技術小聚,Java 大神駕到
- Harness the power of Azure Spring Apps! Experience flexibility with Consumption and Dedicated plans. Tailor the perfect profile for every app, seamlessly mix and match, and al
- Looking to pick up your first programming language? Why not Java?
- Spring Boot 3.1 is now available!
- If you want to learn all about Spring Boot 3.1 (and why wouldn't you?), watch this Spring Tips installment: Go fast with Spring Boot 3.1
- Spring Boot 3.0.7 available now, fixing CVE-2023-20883. There's also a Spring Boot 2.7x line fix for the same issue and one for Spring Boot 2.5
- Happy 28th birthday, Java!)
- Tomorrow! I'll be doing a webinar with Marcus Hellberg over at Vaadin called Bootiful development with Spring Boot 3 and Vaadin
- Matt Raible's updated his article showing how to build a beautiful CRUD application with Spring Boot and Angular
- In last week's installment of A Bootiful Podcast, I talked to Grubhub's John Burns about their use of Kotlin and Spring Boot
- Our friends over at AtomicJar just posted a fantastic blog looking at Testcontainers-local development with Spring Boot 3.1
- Custom WebFlux Exceptions in Spring Boot 3
- Hibernate Natural IDs in Spring Boot
- Congrats Ronald Dehuysser on the new JobRunr release supporting Spring Boot 3.1.0
- Shared Secret Authentication in Spring Boot Application
- Spring Integration 6.1 goes GA
- Spring for GraphQL 1.2.0 released
- Mon cher ami Mahmoud looks at the tantalyzing opportunity that is CRaC, which we just announced Spring Framework will support soon: What the CRaC?!
- Let's goooo! The Microsoft Build of OpenJDK has been optimized for #Azure Arm64 VMs. It takes advantage of CPU-specific features that improve scalability. Take a deep look at optimizations
- Periodic reminder for those who don't know: you should be using Java 17
- Not for nothing, but if you want some beautiful wallpapers, [Jetbrains has made their splash screen art available][https://drive.google.com/drive/folders/1d-zswKtsPOLkSKzYPXCh59VcOTHPgy]
- Spring Data 2023.0 goes GA
- Spring Data Service Release 2022.0.6 & 2021.2.12 released
- Spring LDAP 3.1.0 released
- A Bootiful Podcast: James Ward, Kotlin Product Manager at Google
- RabbitMQ Is Boring, and I Love It
- the Spring Cloud AWS 3.0.1 release is out and it's packed with amazing stuff
- This is a reasoned and well thought out article over on Baeldung that, while not strictly related to Spring, is worth a read: should we create an interface for only one implementation?
- Spring Cloud lead Spencer Gibb in with some cool news: If you've wanted to use Spring Cloud Gateway, but are unable to use webflux, watch this pull request for an MVC/Servlet compatible gateway. It's one of the highest voted enhancement requests!
- 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”