Spring Boot is the most used framework by Java developer for creating microservices. The first version of Spring Boot 1.0 was released in January 2014. After that many releases were done, but Spring Boot 2.0 is the first major release after its launch. Spring Boot-2.0 was released on March 2018 and while writing this blog, recently released version is 2.1.3, which was released on 15th February 2019.
There are many changes which will break your existing application if you want to upgrade from Spring Boot 1.x to 2.x. here is a described migration guide.
We are using Spring Boot 2.0 too 💻!
Currently, here at N47, we are implementing different services and also an in-house developed product(s). We decided to use Spring Boot 2.0 and we already have a blog post about Deploy Spring Boot Application on Google Cloud with GitLab. Check it out and if you have any questions, feel free to use the commenting functionality 💬.
Spring boot 2.0 requires Java 8 as minimum version and it also supports Java 9. if you are using Java 7 or earlier and want to use Spring Boot 2.0 version then it’s not possible, you have to upgrade to Java 8 or 9. also Spring Boot 1.5 version will not support Java 9 and new latest version of Java.
Spring Boot 2.1 has also supported Java 11. it has continuous integration configured to build and test Spring Boot against the latest Java 11 release.
Spring Boot’s Gradle plugin 🔌 has been mostly rewritten to enable a number of significant improvements. Spring Boot 2.0 now requires Gradle 4.x.
Third-party Library Upgrades
Spring Boot builds on Spring Framework. Spring Boot 2.0 requires Spring Framework 5, while Spring Boot 2.1 requires Spring Framework 5.1.
Spring Boot has upgraded to the latest stable releases of other third-party jars wherever it possible. Some notable dependency upgrades in 2.0 release include:
- Tomcat 8.5
- Flyway 5
- Hibernate 5.2
- Thymeleaf 3
Some notable dependency upgrades in 2.1 release include:
- Tomcat 9
- Undertow 2
- Hibernate 5.3
- JUnit 5.2
- Micrometre 1.1
Many projects in the Spring portfolio are now providing first-class support for developing reactive applications. Reactive applications are fully asynchronous and non-blocking. They’re intended for use in an event-loop execution model (instead of the more traditional one thread-per-request execution model).
Spring Boot 2.0 fully supports reactive applications via auto-configuration and starter-POMs. The internals of Spring Boot itself has also been updated where necessary to offer reactive alternatives.
Spring WebFlux & WebFlux.fn
Spring WebFlux is a fully non-blocking reactive alternative to Spring MVC. Spring Boot provides auto-configuration for both annotation-based Spring WebFlux applications, as well as WebFlux.fn which offers a more functional style API. To get started, use the starter
spring-boot-starter-webflux POM which will provide Spring WebFlux backed by an embedded Netty server.
Reactive Spring Data
Where the underlying technology enables it, Spring Data also provides support for reactive applications. Currently, Cassandra, MongoDB, Couchbase and Redis all have reactive API support.
Spring Boot includes special starter-POMs for these technologies that provide everything you need to get started. For example,
spring-boot-starter-data-mongodb-reactive includes dependencies to the reactive mongo driver and project reactor.
Reactive Spring Security
Spring Boot 2.0 can make use of Spring Security 5.0 to secure your reactive applications. Auto-configuration is provided for WebFlux applications whenever Spring Security is on the classpath. Access rules for Spring Security with WebFlux can be configured via a
SecurityWebFilterChain. If you’ve used Spring Security with Spring MVC before, this should feel quite familiar.
Embedded Netty Server
Since WebFlux does not rely on Servlet APIs, Spring Boot is now able to support Netty as an embedded server for the first time. The starter
spring-boot-starter-webflux POM will pull-in Netty 4.1 and Reactor Netty.
HTTP/2 support is provided for Tomcat, Undertow and Jetty. Support depends on the chosen web server and the application environment.
Spring Boot 2.0 now includes support for Kotlin 1.2.x and offers a function
runApplication which provides a way to run a Spring Boot application using Kotlin.
There have been many improvements and refinements to the actuator endpoints with Spring Boot 2.0. All HTTP actuator endpoints are now exposed under the path and resulting
/actuator JSON payloads have been improved.
In addition, the “Reactive Spring Data” support mentioned above, several other updates and improvements have been made in the area of Data.
- Spring Data Web Configuration
- Influx DB
- Flyway/Liquibase Flexible Configuration
- MongoDB Client Customization
Here I have mentioned only the list for changes in Data support but a detailed description will be available here for each topic.
Animated ASCII Art
Finally, Spring Boot 2.0 also provides support for animated GIF banners.