Spring 5 New Features and Enhancements

Spring 5 is the first major release, almost four years after Spring Framework 4.0. During this time, most of the enhancements were done in Spring boot project. In this article, we will quickly go through some exciting features coming in Spring 5.0 release.

Table of Contents

Baseline upgrades
JDK 9 runtime compatibility
Usage of JDK 8 features
Reactive programming support
A functional web framework
Kotlin support
Dropped features

Baseline upgrades

To build and run Spring 5 application, you will need minimum JDK 8 and Java EE 7. Previous JDK and Java EE versions are not supported anymore. To elaborate, Java EE 7 includes –

Similar to Java baseline, there are changes in baselines of many other frameworks as well. e.g.

  • Hibernate 5
  • Jackson 2.6
  • EhCache 2.10
  • JUnit 5
  • Tiles 3

Also, note down the minimum supported versions of various servers.

  • Tomcat 8.5+
  • Jetty 9.4+
  • WildFly 10+
  • Netty 4.1+
  • Undertow 1.4+

JDK 9 runtime compatibility

Spring 5 release has been very well aligned with JDK 9 release dates. The goal is for Spring Framework 5.0 to go GA right after JDK 9’s GA. Spring 5.0 release candidates are already supporting Java 9 on classpath as well as modulepath.

You can expect good JDK 9 support in GA release.

Usage of JDK 8 features

Until Spring 4.3, JDK baseline version was 6. So Spring 4 had to support Java 6, 7 and 8. To maintain the backward compatibility, Spring framework didn’t adapted many new features which Java 8 brought with itself e.g. Lambda programming.

Spring 5 has baseline version 8, so it uses many new features of Java 8 and 9 as well. e.g.

  1. Java 8 default methods in core Spring interfaces
  2. Internal code improvements based on Java 8 reflection enhancements
  3. Use of functional programming in the framework code – lambdas and streams

Reactive programming support

Reactive programming is one of the most important features of Spring Framework 5.0. Reactive programming provides an alternate style of programming focused on building applications that react to events. Spring Framework 5 embraces Reactive Streams (language-neutral attempt to define reactive APIs) and Reactor (java implementation of Reactive Streams provided by the Spring Pivotal team) for its own reactive use as well as in many of its core APIs.

Spring Web Reactive lives in the new spring-web-reactive module next to the existing (and popular!) Spring Web MVC that lives in the spring-webmvc module. Please note that in Spring 5, traditional Spring MVC keeps running on any Servlet 3.1 stack, including Java EE 7 servers.

A functional web framework

Building on top of the reactive features, Spring 5 also provides a functional web framework. It provides features to define endpoints using functional programming style. This framework introduces two fundamental components: HandlerFunction and RouterFunction.

The HandlerFunction represents a function that handles incoming requests and generates responses. RouterFunction serves as an alternative to the @RequestMapping annotation. It’s used for routing incoming requests to handler functions. e.g.

RouterFunction<String> route =
    request -> Response.ok().body(fromObject("Hello World")));

Kotlin support

Kotlin is a statically typed JVM language that enables code that is expressive, short, and readable. Spring framework 5.0 has good support for Kotlin.

Dropped features

Along with the increase in baseline versions for Java, Java EE and a few other frameworks, Spring Framework 5 removed support for a few frameworks. e.g.

  • Portlet
  • Velocity
  • JasperReports
  • XMLBeans
  • JDO
  • Guava

Happy Learning !!

Reference: Link

Leave a Reply

Most Voted
Newest Oldest
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.

Our Blogs

REST API Tutorial