Spring Team
Rossen Stoyanchev

Rossen Stoyanchev

Spring Framework committer

Jersey City, NJ

Blog Posts by Rossen Stoyanchev

Spring Framework 5.0 M5 Update

An update on the 5th and last milestone of Spring Framework 5.0…

Spring MVC and Spring WebFlux

The name Spring MVC is both well known and widely used but it may surprise a few there is no actual project or independent distribution with that name. Rather it is a module within the Spring Framework distribution called spring-webmvc. Here is another trivia question. Did you know that the top-level package in the module does not feature “mvc”? Rather it is called org.springframework.web.servlet. Practically speaking those are details that we don’t have to remember. What matters is that we have a short and memorable name to refer to Spring’s Servlet stack based web framework.


Reactive Programming with Spring 5.0 M1

As Juergen mentioned in his Spring Framework 5 M1 release announcement our Spring Reactive initiative has been merged into Spring Framework proper preserving all contributions and its full history over more than a year.

What is it?

In a nutshell reactive programming is about non-blocking, event-driven applications that scale with a small number of threads with backpressure as a key ingredient that aims to ensure producers do not overwhelm consumers. The Reactive Streams specification (also adopted in Java 9) enables the ability to communicate demand across layers and libraries from different providers. For example an HTTP connection writing to a client can communicate its availability to write all the way upstream to a data repository fetching data from a database so that given a slow HTTP client the repository can slow down too or even pause. For a more extensive introduction to reactive programming check Dave Syer’s multipart series “Notes on Reactive Programming”.


Spring Web Flow 2.4.4 released

A new Spring Web Flow 2.4.4 maintenance release is now available for download or use from Maven and Gradle builds. This release extends compatibility to Hibernate 5.2 and also includes several mainly JSF related fixes.


Reactive Spring

At SpringOne2GX 2015, Juergen announced plans for Spring Framework 5 with a major focus on reactive architectures. Concrete efforts are already underway and a lot has happened since!

At the most basic level, reactive programming models allow for writing non-blocking services and applications. This requires a fundamental shift from writing imperative logic to async, non-blocking, functional-style code, in particular when interacting with external resources.

Reactive Web Applications

Most Java web applications are built on the Servlet API which was originally created with synchronous and blocking semantics. Over the years, support for asynchronous requests (Servlet 3.0) and non-blocking I/O (Servlet 3.1) was added. In Spring MVC, we’ve found that it is feasible to add selective async HTTP request handling to existing applications. However, we’ve also found that it is very hard to introduce non-blocking I/O within an existing ecosystem of web frameworks and applications. Doing so requires very deep change all the way to the core contracts which need to switch from blocking to async semantics.


Spring Web Flow 2.4.2 released

A minor maintenance release of Spring Web Flow is now available for use. The release addresses compatibility issues against Spring Security 4.0 and the Mojarra and Apache MyFaces JSF implementations. For a list of the addressed issues see the release notes JIRA report.


Spring Framework 4.1 -- Spring MVC Improvements

Recently Juergen Hoeller
announced the availability
of the first of two 4.1 release candidates.
Brian Clozel followed up with a post on the
static web resources handling enhancements.
Previously Stephane Nicoll blogged about
cache and
JMS related improvements.
The goal of this post is to summarize Spring MVC improvements.

The JDK 1.8 java.util.Optional is now supported for @RequestParam, @RequestHeader and
@MatrixVariable controller method arguments while ListenableFuture is supported as a
return value alternative to DeferredResult where an underlying
service (or perhaps a call to AsyncRestTemplate) already returns ListenableFuture.


Spring Web Flow 2.4 RC1 Released

Spring Web Flow 2.4 release candidate 1 is now available. Please use the http://repo.springsource.org/milestone repository, download a distribution archive, or visit the project home page.

The release includes Java based configuration for Spring Web Flow and Spring Faces. To demonstrate it the booking-mvc and the booking-faces samples have been switched to all Java configuration. See their respective configuration classes here and here.

For more details see the updated documentation and samples repository. Please give this release a try and provide feedback in JIRA towards the final release at the end of April.


Spring Framework 4.0 M2: WebSocket Messaging Architectures

As I wrote previously, a WebSocket API is only the starting point for WebSocket-style messaging applications. Many practical challenges remain. As one Tomcat mailing list user mused recently:

it does seem to me that websockets is still not really “production-ready”, (I am not talking about the Tomcat implementation per se, but more generally) … native websockets capability in IE is only available since IE-10 and that solutions which allow this to work in lower IE versions are a bit “iffy” (relying on a diversion through Adobe’s FlashPlayer e.g.). (Most of our customers are largish corporations, which are not going to update their browsers, nor open special ports in their firewalls, just to please us).