This Week in Spring - June 23, 2020

Hi, Spring fans! What a week it’s been! Tomorrow I’ll be presenting a webinar on the easy integration between Spring Boot and Tanzu Wavefront. Wavefront is an all-in-one, integrated distributed tracing metrics analytics observability platform. Join us tomorrow to learn about observability, about Wavefront, and their integration in the Spring ecosystem with Spring Cloud Sleuth and Micrometer, among other things.

We’ve so many great things to look at this week so let’s get to it!

Read more

What's new in Spring Boot 2.3

Speaker: Phil Webb (@phillip_webb)


Use the timecodes below if you want to jump to a specific part of the presentation:

  • 00:27 - Intro
  • 01:59 - Creating the Demo
  • 04:01 - Building Docker Images with the Spring Boot Plugin
  • 09:21 - Building Docker Images with a Dockerfile
  • 16:40 - Customizing Layers
  • 21:38 - Graceful Shutdown
  • 25:19 - Kubernetes Probes
  • 30:55 - Configuration Properties End-to-End Traceability
  • 33:00 - Wrap-up and Upgrade Gotchas


The following links are referenced in the presentation:

Read more

Getting Started With RSocket: Spring Security

Reading time: about 6 minutes
Coding time: about 20 minutes

If you’ve been following my series on RSocket, you’ve already learned how to build client-server applications with Spring Boot. In today’s exercise, you’re going to learn how to add security to your RSocket applications.

The task of securing RSocket applications is greatly simplified when you use Spring Security. Spring Security is a must-have module for any production application. It allows you to easily plugin many different authentication providers and restricts each user’s access to your application based on their identity and their role.

Read more

Spring Tips: Spring and GraalVM (pt. 2)

speaker: Josh Long (@starbuxman)

Hi Spring fans! Welcome to a very special, interregnum episode of Spring Tips where we revisit Spring and GraalVM native images. I wanted to get this video out in light of the recent Spring Graal 0.7.1 release which drastically simplifies things even compared to the last time we looked at Spring and Graal waaay back in April 2020.

TL;DR: GraalVm is a JIT replacement that you can use with a stock-standard JVM, and that’s worth looking into in its own right. GraalVM also offers a separate feature supporting native image compilation. This native-image builder takes bytecode and turns it into an architecture-specific binary that sheds the JVM and embeds something called SubstrateVM. Native images are fast to startup and they take way less memory at runtime. These qualities make it desirable in a containerized, cloud-centric environment.

Read more

This Week in Spring - June 16th, 2020

Hi, Spring fans! Welcome to another jam-packed weekly roundup of This Week in Spring.

I’ve got a few upcoming speaking engagements you might be interested in. I’ll be speaking (virtually) at the San Francisco JUG on June 24th at 6:30 PM. Join me!

Can’t make it to the (virtual) SF JUG appearance? On June 30th, VMware Tanzu (where the Spring team lives) will be hosting one of my workshops, also on Reactive Spring. I’m going to cover tons of stuff: R2DBC, Reactor, Spring WebFlux, Spring WebFn, reactive Spring Data for SQL and NoSQL, RSocket, reactive security, reactive service orchestration, and composition patterns, and more. This is going to be at an ideal time for EU timezones, so please register now.

Read more

Spring Cloud Data Flow 2.6.0-M1 Released

Spring Cloud Data Flow team is pleased to announce the first milestone release of 2.6.0.

This 2.6.0-M1 adds some bug fixes and the following features:

  • Composed Task Runner as SCDF native module
    Composed Task Runner is now an integral part of SCDF itself and gets registered implicitly while the users who have the custom composed task runner can still override the native one. This enables us to integrate the composed tasks management within the context of Spring Cloud Data Flow. This change also allowed us to provide some additional user experiences when managing composed tasks. .

  • Improvements in task applications management
    This milestone added some improvements at the backend such as the ability to uniquely identify the task elements inside the composed task, adding task manifest as part of the last ran task definition, ability to cleanup task related resources as part of task definition cleanup along with the SCDF dashboard changes.

  • Liveness/Readiness probes for SCDF/Skipper deployments
    SCDF/Skipper server Kubernetes deployment configuration files are updated with the liveness/readiness probes which can be customized based on the deployment setup.

  • Bundling SCDF/Skipper DB schema files
    The DDL scripts for all the supported databases are now bundled and available in the classpath. For the database administrators who want to setup the database without the flyway activated schema management, this bundle would come in handy.

Read more

The path towards Spring Boot native applications

I would like to use the opportunity of our Spring GraalVM Native 0.7.0 release to give you a status update about our work on Spring Boot native images.


Native image provides a way to build and run Spring Boot applications with different characteristics than a regular JVM deployment:

  • The output is a native executable that contains your application with a subset of the JDK and the dependencies required to run it.

  • In practice the executable would likely be shipped in an highly optimized container image (FROM scratch Docker image is supported) with reduced surface attack which is good fit with Kubernetes.

  • Startup time is almost instant and peak performance is available immediately, allowing support for scale-to-zero (serverless) applications including for regular Spring Boot web applications.

  • Memory consumption is reduced, which is a good fit for systems split into multiple microservices.

As you would expect, native images are not a free lunch and those interesting capabilities come with a few drawbacks:

  • GraalVM native is a young platform which is far less mature than the JVM.

  • This new flavor of Java is not yet well supported and tested by JVM libraries.

  • It requires initialization, resources, reflection and proxy explicit configuration.

  • Build time is very long and build memory consumption is high.

  • Lower throughput and higher latency (more details ).

Obviously native image is a moving target and some of those characteristics are likely to evolve in the future. The Spring team currently collaborates actively with the GraalVM team in order to ensure Spring and more globally the JVM ecosystem integrated via Spring Boot works well when compiled as native images. This effort includes fixes and new features in GraalVM native, changes to Spring itself, but also additional work to improve testability and maintainability with this GraalVM native platform.

It is also worth noticing that the scope of native images is now wider than GraalVM since Mark Reinhold has recently announced Project Leyden, an effort to standardize native images at Java platform level.

Read more

This Week in Spring - June 9th , 2020

Hi. How are you all doing? I hope you’re doing well.

There’s some interesting stuff this week so, without further ado…

Read more