This Week in Spring - May 19th, 2020

Hi, Spring fans! Welcome to another installment of This Week in Spring! What a wonderful, bootiful week it’s been! This last week saw the long-awaited release of Spring Boot 2.3.0!

There are a lot of wonderful features in this release including, but not limited to, Java 14 support, Docker image generation, graceful shutdown, liveliness probes, upgrades to Spring Data Neumann, and so much more. Here are some resources on some of those features. And, also, check out the blog.

  • R2DBC support (see this Spring Tips installment on using R2DBC
  • Docker container image support. See this blog on Docker image generation
  • Java 14 support. See this Spring Tips installment on Java 14
  • This is also the version to use if you want to consume the Graal Native Image builder feature. Here’s a Spring Tips video on that, too.
Read more

What's new in Spring Data (Klara Dan von) Neumann?

Spring Data Neumann is the first release to follow the new six-month cadence. The reduced timeframe lets us deliver new features more often, which is key in enabling you to move faster. The release itself ships with a bunch of new stuff and includes important (potentially breaking) upgrades of several store.

Major Version Upgrades

Several store modules, as listed below, required a major version bump due to potentially breaking changes in either their exposed API or their drivers:

Before moving on to selected new features let’s break down some those API changes. If in doubt, please visit the Upgrading sections of the modules reference documentation. And, for those worried because the upgrade would be too painful right now, the previous Moore release train will still be around and will receive updates for another twelve months.

JDBC Every SQL store comes with its very own specialties that required specific treatment. To better support this, a couple of changes had to be made, resulting a major version bump for the module. Now, by default, the AbstractJdbcConfiguration will try to determine the database specific Dialect from the provided DataSource or registered DialectResolver. Out of the box, the JDBC modules ships with dialects for H2, HSQLDB, MySQL, Postgres, MariaDB, Microsoft SqlServer and DB2. Spring Data JDBC now also by default quotes all table names and columns. While this might force you to adapt either your CREATE TABLE statements or your @Column annotations it gives greater flexibility when choosing those names.

MongoDB Spring Data MongoDB picks up the MongoDB Java and reactive streams 4.0 driver generation that lets you choose the desired methodology without having to have the other on the path. Therefore, both the sync as well as the reactive MongoDB driver are now optional dependencies that need to be added manually. With the new drivers, some of the already deprecated API has finally been removed, impacting exposed configuration classes like AbstractMongoConfiguration and XML namespace elements provided by the Spring Data implementation. We summarized public facing changes in the Upgrading Section of the reference documentation.

Apache Cassandra The long overdue upgrade to the Apache Cassandra 4.0 driver generation, with not only its new package and data structure but also changed behavior in cluster and session handling, leads to extensive changes in configuration that will bleed into user configuration when using the XML namespace or more complex scenarios than just the default setup with AbstractCassandraConfiguration.

Couchbase The Couchbase module follows the Couchbase SDK and upgrades from Version 3.x to 4.x which includes automatic index management and transaction support. Read the full story in their Blog.

Elasticsearch The release adds support for the HTTP Client API, SSL, and Proxy support, along with extensive internal changes that included streamlining and removing of (deprecated) API, which required a major version bump. The Elasticsearch module now ships a Document covering Get-, Index- and Search-Requests allowing the mapping layer to use types like SearchHit, SearchHits and SearchPage.

Having the stage set, let’s move on to a selection of new features.

Read more

Introduction to Azure Spring Cloud with IntelliJ IDEA

Azure Spring Cloud is a new Platform as a Service offering for Microservices apps. It is a fully managed service jointly built, operated, and supported by VMware and Microsoft to simplify spring boot based microservices development and management. In this blog, we will walk through how you can accelerate your development with Azure Spring Cloud and IntelliJ IDEA.

Read more

CVE reports published for Spring Security

We have released Spring Security 5.3.2, 5.2.4, 5.1.10, 5.0.16 and 4.2.16 to address the following CVE reports:

Please review the information in the CVE report and upgrade immediately.

Spring Boot users should upgrade to 2.2.7 or 2.1.14.

Read more

This Week in Spring - May 12th, 2020

Hi, Spring fans! Welcome to another installment of This Week in Spring! I hope you’re all doing well, staying safe, taking socially distant walks every day to get some fresh air and exercise, and so on. I’m trying my best to stay sane. We just crossed into month three-under quarantine, having gone into quarantine on 11 March 2020. It’s pretty crazy to think about how slowly and quickly time has flown.

One of the things that makes me happy? Learning new things. This weekly roundup, This Week in Spring, has always been a lot of fun for me. It’s become even more of a privilege in the age of quarantine, having something to learn and soak up. I know that most of us will get through this, but I’ve been very keen on not letting this time go to waste for me. It’s exhausting to live under this quarantine. It’s exhausting to be anxious about things. I completely understand the instinct to want to just stay in bed until it all blows over. It’s completely normal. You’re allowed to be anxious, to worry, to feel despair. I have those days, too. But, I have found it helpful to try to plan activities with my family and to focus on backburner projects. And I find walking to be helpful. My condo’s gym is closed because of the coronavirus pandemic. I’ve nonetheless found walking, meditation, or really any fairly mindless activity, supports the process of learning. Anyway, that’s just me, friends.

Read more

Getting Started With RSocket: Servers Calling Clients

Reading Time: about 7 minutes.
Coding Time: about 20 minutes.

If you’ve been following my series on RSocket, you’ve heard me refer to “clients and servers” many times. But, with RSocket, the line between client and server is blurry. With Rsocket, servers can send messages to clients, and clients can respond to these requests in the same way a server would.

In fact, the RSocket docs don’t use the terms ‘client’ or ‘server.’ The docs use the terms ‘requester’ and ‘responder’ instead. In RSocket, any component can act as a requester, and any component can act as a responder or even both at the same time. In RSocket, all this back-and-forth communication between requesters and responders takes place over a single ‘bi-directional’ connection.

Read more

Spring Security OAuth2 Auto-config 2.3.0.RC1, 2.2.7, 2.1.14 Released

On behalf of the community, I’m pleased to announce the release of Spring Security OAuth2 Auto-config 2.3.0.RC1 (release notes), 2.2.7.RELEASE (release notes), 2.1.14.RELEASE (release notes). The release delivers dependency updates to be compatible with the last versions of Spring Boot. Users are encouraged to update to the latest patch release.

Read more

Tanzu Observability by Wavefront Spring Boot Starter

Spring Boot has a great observability story. With the Actuator, we auto-configure Micrometer, an application metrics facade that supports numerous monitoring systems. With a few properties, you can start emitting a wide range of metrics out-of-the-box to your favorite monitoring system. And if you need to use distributed tracing, Spring Cloud Sleuth gets you covered.

Tanzu Observability for Wavefront (formerly Wavefront) delivers scalable observability as a service where Spring developers can build analytics-driven dashboards based on multi-sourced data including metrics, traces, histograms, and span logs.

Read more