Simplified Event Externalization with Spring Modulith

Engineering | Oliver Drotbohm | September 22, 2023 | ...

Transactional service methods are a common pattern in Spring applications. These methods trigger a state transition important to the business. This usually involves a core domain abstraction, such as an aggregate and its corresponding repository. A stereotypical example of such an arrangement might look like this:

@Service
@RequiredArgsConstructor
class OrderManagement {

  private final OrderRepository orders;

  @Transactional
  Order complete(Order order) {
     return orders.save(order.complete());
  }
}

As state transitions like these might be interesting to third parties, we might want…

Paketo Buildpacks Bionic End Of Support

Engineering | Scott Frederick | September 22, 2023 | ...

The Spring Boot plugins for Maven and Gradle provide the ability to build Docker images using Cloud Native Buildpacks. By default, Spring Boot uses the CNB builders provided by the Paketo Buildpacks project.

What's Changed

The Paketo Buildpacks project has announced that Ubuntu 18.04 Bionic-based builders are no longer supported, in favor of Ubuntu 22.04 Jammy-based builders. See the Paketo announcement for more details on the builders that are affected by this change.

The Maven and Gradle plugins for Spring Boot versions 3.1 and earlier use the Bionic Base Builder by default when building…

Hello, Java 21

Engineering | Josh Long | September 20, 2023 | ...

Hi, Spring fans!

Get the bits

Before we get started, do something for me quickly. If you haven’t already, go install SKDMAN.

Then run:

sdk install java 21-graalce && sdk default java 21-graalce

There you have it. You now have Java 21 and graalvm supporting Java 21 on your machine, ready to go. Java 21 is, in my estimation, the most critical release of Java, perhaps ever, in that it implies a whole new world of opportunities for people using Java. It brings a slew of nice APIs and additions, like pattern matching, culminating years of features slowly and steadily adding to the platform. But…

Spring Tips: Making the joyful jump to Java 21

Engineering | Josh Long | September 19, 2023 | ...

Hi, Spring fans! Java 21 and GraalVM supporting Java 21 are at long last here! It's been a long time in coming, but Java 21 - which comes out later today on the 19th of September, 2023 - brings with it some of the most exciting new features of any Java release. In this video, I (https://www.youtube.com/@coffeesoftware) will look at some of the foundational features from Java 17 and see how they culminate in Java 21. I'll look at the biggest features - virtual threads and pattern matching. I'll also look at some of the quality-of-life features that you might not otherwise notice, but that are…

This Week in Spring - September 19th, 2023 (Java 21 Edition)

Engineering | Josh Long | September 19, 2023 | ...

Hi, Spring fans! Welcome to another installment of This Week in Spring - Java 21 edition!

The big news, indeed, the biggest news, is that Java 21 is now available here! You should use SDKMAN to install it, like this: sdk install java 21-graalce && sdk default java 21-graalce. This install givews you both the new Java 21 OpenJDK distribution and the new GraalVM native image support for Java 21. It works just fine with existing versions of Spring Boot, but the real payoff will be with Spring Boot 3.2, where you'll be able to plug in virtual threads with nary but a flick of a property: spring.threads.virtual.enabled=true. Spring Boot 3.…

This Week in Spring - September 12th, 2023

Engineering | Josh Long | September 12, 2023 | ...

Hi, Spring fans! Welcome to another installment of This Week in Spring! How are you this fine 12th of September? I'm doing alright, elated, even. I've just returned from beautiful Oslo, Norway, and I've got a busy 30 days or so ahead, starting today. I'm visiting Seattle, WA; Mexico City, Mexico; Dallas, TX; Singapore (SpringOne Singapore); Antwerp, Belgium (Devoxx BE!); London, United Kingdom; Amsterdam, Netherlands; and (maybe) parts of Germany. Keep an eye on my socials and videos for details as those dates and duties become clearer. Anyway, we've got a ton to look into this week, so…

All together now: Spring Boot 3.2, GraalVM native images, Java 21, and virtual threads with Project Loom,

Engineering | Josh Long | September 09, 2023 | ...

This has been a very long time in coming, but finally we can create GraalVM native images that use Spring Boot (via Spring Boot 3.2) and Java 21's virtual threads (Project Loom)!

Why does all this matter? Each of these individual things, Project Loom, and GraalVM native images, offer compelling runtime characteristics. I've waited so very long for these to converge! Let's talk about them each in turn.

GraalVM Native Images

GraalVM is an OpenJDk distribution that provides some extra utilities, including a utility called native-image that does ahead-of-time (AOT) compilation on your code. We're…

This Week in Spring - September 5th, 2023

Engineering | Josh Long | September 05, 2023 | ...

Hi, Spring fans! Welcome to another installment of This Week in Spring! How are you? I just got back from another fabulous labor day weekend, and am headed to Oslo, Norway, for the fabulous JavaZone 2023 event. This will be my first time returning to lovely Oslo, Norway, since the pandemic! I can't wait! If you're there, don't hesitate to say "hey"!

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all