HTTP/3 support in Reactor 2024.0 Release Train

Engineering | Violeta Georgieva | November 26, 2024 | ...

HTTP/3, the latest major version of the Hypertext Transfer Protocol, had its specification finalized in June 2022. This version is designed to enhance performance, reliability, and security. Unlike its predecessors, HTTP/3 utilizes QUIC instead of TCP as its transport layer. QUIC is a UDP-based, multiplexed, and secure transport protocol that includes built-in TLS 1.3 encryption, making QUIC encrypted by default.

To learn more about the performance and benefits of HTTP/3, check out What is HTTP/3.

For information on browser adoption, take a look at Examining HTTP/3 Usage, which also provides raw data on HTTP versions used by…

This Week in Spring - November 26th, 2024

Engineering | Josh Long | November 26, 2024 | ...

This Week in Spring - November 26th, 2024

Hi, Spring fans! Welcome to another installment of This Week in Spring!

Happy Spring Boot 3.4 release month to those who celebrate! And, also, Happy Thanksgiving to those who celebrate! Spring Boot 3.4 brings with it long-anticipated updates to the entire portfolio of Spring projects, and so a lot of the content in this roundup has to do with those releases!

Bootiful Spring Boot 3.4: Start Here

Engineering | Josh Long | November 25, 2024 | ...

Hi, Spring fans! And happy Spring Boot 3.4 release to those who celebrate!

I know, I know what you're thinking: Josh, Spring Boot 3.4 already shipped! I know it. Spring Boot 3.4 dropped a week earlier this year! In the last couple of years, we’ve released Spring Boot on the same day as Thanksgiving Day in the USA, which is tedious for us here in the United States because it requires more preparation. This year, it’s a week early! Why do I mention this? Well, I’ve had some time already - before Thanksgiving, even - to explore the fantastic possibilities unlocked by using Spring Boot 3.4. While…

Bootiful Spring Boot 3.4: Spring Batch

Engineering | Josh Long | November 24, 2024 | ...

The new release of Spring Batch 5.2 has a ton of features! Spring Batch is a compelling way to handle large but finite sequential data access. Think: reading from an SQL database and writing to a CSV, or reading from an FTP server and writing out an analysis of a MongoDB - batch processing. You know what this is. Half the job (pardon the pun!) is the integration of various sources of data and multiple sinks of data. The other aspect, as you can imagine with workloads that take a long time and could fail, is maintaining durable and extensive metadata related to each batch job’s run. Again, I…

Bootiful Spring Boot 3.4: Spring AI

Engineering | Josh Long | November 24, 2024 | ...

I love Spring AI. It’s an amazing project designed to bring the patterns and practices of AI engineering to the Spring Boot developer. It’s got clean idiomatic abstractions that’ll make any Sring developer feel right at home, and it has a ton of integrations with all manner of different vector stores, embedding models, transcription models, image modes, and chat models.

The new release, m4, builds upon Spring Boot 3.4 and adds a ton of new features. As usual, I can’t hope to look at all the new features, but the release notes do an exquisite job.

  • there’s new Amazon Bedrock Convertse support
  • there’s been a ton of work done to support more expressive function calling, both in Java and Kotlin
  • there’s the first cut of support for the ideas taking shape in the AI community around "advanced and modular RAG". RAG, of course, is retrieval augmented generation and refers to using data from a system or service to inform the response generated by a chat model. These ideas are articulated in this paepr and this one, and the building blocks are taking root in this new release. Amazing!

Bootiful Spring Boot 3.4: Spring Boot

Engineering | Josh Long | November 24, 2024 | ...

And now we’re back where we started: Spring Boot 3.4! This release is what pulls everything together. When you look at Spring Boot, remember that it normalizes the integration of all the projects it assembles and tries, wherever possible, to smooth out whatever integration issues might arise from using those projects together. In addition, it provides facilities that benefit users of all those other frameworks.

Case in point: when we introduced GraalVM native image support in Spring Framework 6 and Spring Boot 3, it was delivered in three tranches. One: a component model, lifecycle, and core…

Bootiful Spring Boot 3.4: Spring Data

Engineering | Josh Long | November 24, 2024 | ...

The release announcement blog does a good job highlighting some of the many features in Spring Data 2024.1. Remember: Spring Data is an umbrella project, aggregating modules supporting, among other things, Couchbase, Redis, MongoDB, JDBC, R2DBC, Neo4J, Apache Cassandra, and countless other data stores. It’s the easiest way to connect your data stores to your applications. And indeed, we could write a small book with all the new features here!

Here are some of the features that caught my eye.

  • A new Repository fragments SPI lets any arbitrary .jar on the classpath, or indeed code in another package, contribute extensions to the Spring Data repository mechanism via the Spring.factories service factory mechanism
  • much-reduced query parsing overhead in Spring Data JPA
  • expiration for @TimeSeries in Spring Data MongoDB
  • keyspace qualification for tables and user-defined types in Spring Data for Apache Cassandra
  • Refined CQL generation with CqlGenerator in Spring Data Cassandra
  • Jedis Lua scripting support in transaction and pipeline operations in Spring Data Redis
  • Customize the JedisClientConfig with the JedisClientConfigBuilderCustomizer

Bootiful Spring Boot 3.4: Spring Framework

Engineering | Josh Long | November 24, 2024 | ...

The Spring Framework 6.2 release notes provide a much more detailed look at all the new features. I won’t rehash all of them here, but here are some of the features that caught my eye:

  • Improved generic type safety in auto wiring sorting.
  • Smarter, more optimized Spring Expression Language expressions.
  • More efficient handling of resources in web applications, as well as in the WebJars support.
  • Refinements to Spring’s JMS support and STOMP-over-WebSocket support.
  • Improved testing support with the new HTMLUnit dependency, AssertJ-style MvcTester for Spring MVC tests, and much improved mocked beans in tests.
  • Support the concept of @Fallback beans, essentially the mirror image of @Primary beans.
  • Background bean initialization.
  • Improved binding of data to constructors.

Bootiful Spring Boot 3.4: Spring Integration

Engineering | Josh Long | November 24, 2024 | ...

Spring Integration 6.4 is your one-stop shop for all matters of enterprise application integration. So it supports numerous messaging and integration patterns and even more numerous adapters for all manner of technologies - SFTP, FTP, Redis, Apache Pulsar, Apache Kafka, JDBC, TCP/IP, etc. So, as you might have surmised, there’s just no way to keep up with them. The release notes do a pretty good job, so I’ll list some of my favorites.

  • The remote file system inbound adapters now use the clearFetchedCache() method to remove references from the cache for unprocessed remote files.
  • The Spring Integration distributed lock mechanism has a method - LockRepository#delete - that now returns the result of removing ownership of a distributed lock.
  • similarly, the Redis-backed implementation of distributed locks - RedisLockRegistry - throws a ConcurrentModificationException if the ownership of the lock is expired.
  • there is now a convenient Consumer<SshClient> to allow for further customization of the internal SshClient

Bootiful Spring Boot 3.4: Spring Modulith

Engineering | Josh Long | November 24, 2024 | ...

When Spring Boot first came out, I would tell people at talks that Spring Boot is like pair programming with the Spring team. It provided the convention-over-configuration to allow you to stand up infrastructure and get something going quickly. But it didn’t provide much architectural guidance. No "rails," as it were, regarding how you structured your application. And this was OK, I think, since Spring Boot isn’t a one-trick pony. You can use it for CLIs, monoliths, web applications, batch jobs, streaming and integration processors, microservices, GRPC services, Kubernetes operators, etc…

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