L'équipe Spring vient d'annoncer la sortie officielle de Spring Boot 2.0. Cette version est l'aboutissement de 17 mois de travail et plus de 6800 commits faits par 215 personnes différentes. Ci-dessous, vous trouverez les principaux changements et nouveautés qui ont été introduits.
22/02/2018 : Depuis la sortie de Spring Boot en avril 2014, force est de constater que la promesse de simplifier et d'accélérer le développement de projets basés sur les briques Spring a été tenue.
Pour rappel, Spring Boot permet de faciliter la création d'applications basées sur Spring, prêtes pour la production avec le moins d'ennuis possible. Ceci est rendu grâce à la fourniture de plusieurs éléments :
- Une BOM de dépendances. Il s'agit d'une liste de versions de bibliothèques compatibles entre elles ;
- Des Starters. Il s'agit de dépendances permettant la configuration par défaut de certains composants (ex. : spring-boot-starter-web pour créer une application Web et spring-boot-starter-data-mongodb pour gérer une base de données MongoDB) ;
- Des AutoConfiguration qui définissent des configurations et des comportements par défaut (convention over configuration) mais qu'il est possible de remplacer ou surcharger via des conditions ;
- Des composants production ready tels que Actuator.
Ainsi il est possible de créer une application Web avec seulement une dépendance Maven et quelques classes. Le tout en assurant la production d'applications « Cloud ready ».
Parmi les changements majeurs, on notera :
Java >8
La version minimale est désormais Java 8. Les anciennes versions de Java ne sont plus supportées.
Bien entendu le support de Java 9 est également intégré.
Kotlin
Kotlin est sûrement LE langage alternatif du moment pour la JVM. Devenu officiellement l'un des langages pour les développements Android, il fait désormais son entrée dans l'écosystème Spring.
Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | package com.example.demo import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class DemoApplication fun main(args: Array<String>) { runApplication<DemoApplication>(*args) } |
Pour les amateurs du déclaratif, il est également possible de définir ses endpoints via DSL plutôt que des annotations :
Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | router { ("/blog" and accept(TEXT_HTML)).nest { GET("/", fooHandler::findAllView) GET("/{slug}", fooHandler::findOneView) } ("/api/blog" and accept(APPLICATION_JSON)).nest { GET("/", barHandler::findAll) GET("/{id}", barHandler::findOne) } } |
Spring Framework 5.0
Ces dernières années ont vu l'explosion de la programmation réactive, et la dernière version majeure de Spring Framework n'y a pas manqué. Cette dernière intègre donc l'API Reactor Bismuth (reactor-core 3.1).
Ainsi la création de flux de type Server-sent events est grandement facilitée :
Code java : | Sélectionner tout |
1 2 3 4 5 6 7 8 | @RestController public class MyController { @GetMapping( path = "/ticks", produces = MediatType.TEXT_EVENT_STREAM_VALUE ) public Flux<String> ticks() { return Flux.internal(Duration.ofSeconds(2)); } } |
Ceci se traduit par l'arrivée du nouveau starter spring-boot-starter-webflux (basé sur Reactor Netty). Par conséquent, de nombreux starter basés sur le Web n'ont plus de dépendances explicites à spring-boot-starter-web afin de laisser libre le choix entre la stack classique et réactive.
Spring Data 2.0
La gestion des données n'est pas en reste, car elle a droit au même traitement de faveur. Tout du moins les API pour MongoDB, Redis et Cassandra avec l'arrivée des nouveaux starters, respectivement : spring-boot-starter-data-mongodb-reactive, spring-boot-starter-data-redis-reactive et spring-boot-starter-data-cassandra-reactive.
Code java : | Sélectionner tout |
1 2 3 4 5 6 | public interface FooRepository extends Repository<Foo, String> { Mono<Foo> findOne(String id); Flux<Foo> findAll(); } |
Gradle
Le plugin a été en grande partie réécrit afin notamment d'étendre les tâches standards existantes (et ainsi bénéficier de leurs options et comportements. La version minimum requise est désormais 4.x
Actuator
Le composant permettant de faciliter la surveillance et la gestion d'une application Spring Boot a subi une profonde refonte. Ainsi il est fortement recommandé d'utiliser la nouvelle dépendance spring-boot-starter-actuator (au lieu de spring-boot-actuator).
Par exemple :
- remplacement des métriques spécifiques à Spring Boot par le support de Micrometer et des dimensional metrics ;
- modification des formats des endpoints /application/env (#9864), /application/flyway (#9973), /application/liquibase (#9974), /application/health (#10249).
Sources
Spring Boot 2.0 Release Notes
Spring blog
Votre opinion
Que pensez-vous de Spring Boot ? Est-ce toujours justifié par rapport aux évolutions de Java EE ?
Allez-vous sauter le pas et passer à la programmation réactive ? À Kotlin ?
Voir aussi
Java 9 est disponible, la plateforme se met aux modules
Spring 5.0 M2 est disponible, le conteneur léger Java apporte un nouveau framework web fonctionnel
Oracle annonce la disponibilité générale de Java EE 8