1. #1
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 894
    Points : 7 008
    Points
    7 008

    Par défaut Spring Boot 2.0 est officiellement disponible

    Spring Boot 2.0 sera bientôt disponible 

    Mise à jour le 01/03/2018 : Spring Boot 2.0 est officiellement disponible

    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 :
    1. Une BOM de dépendances. Il s'agit d'une liste de versions de bibliothèques compatibles entre elles ;
    2. 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) ;
    3. 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 ;
    4. 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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    décembre 2011
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 215
    Points : 3 140
    Points
    3 140
    Billets dans le blog
    12

    Par défaut

    Bonjour,

    J'attendais cette version depuis un bout de temps, j'ai hate de tester cette nouvelle version de Sprint Boot avec Spring 5. Je vais surement utiliser les types Mono et Flux si je travaille avec Repository, mais pas sur que toutes les bases relationnelles soit compatibles avec ce concept. Sinon je ne suis pas fan de la syntaxe nodejs.

    PS: C'est juste une impression ou il y a un puissant lobby qui se cache derrière Kotlin ?

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Mon profil Developpez | Mon profil Linkedin | Mon site : https://gokan-ekinci.appspot.com

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : août 2005
    Messages : 2 894
    Points : 7 008
    Points
    7 008

    Par défaut

    Citation Envoyé par Gugelhupf Voir le message
    Je vais surement utiliser les types Mono et Flux si je travaille avec Repository, mais pas sur que toutes les bases relationnelles soit compatibles avec ce concept.
    En fait, aucun SGBDR ne l'est. En tout cas pas via les drivers JDBC puisque l'API ne le supporte pas, et Spring Data JDBC/JPA sont basés dessus. Avec l'arrivée des briques bas-niveau de la programmation réactive dans Java 9 (Flow), on peut espérer que l'API JDBC finisse par offrir ce type de support.


    Citation Envoyé par Gugelhupf Voir le message
    Sinon je ne suis pas fan de la syntaxe nodejs.
    Je suppose que tu veux parler de la nouvelle API de déclaration des endpoints ? Je dois avouer que je suis pas un grand fan non plus mais ca se veut dans la nouvelle approche apportée. Il est possible de faire de même pour remplacer les @Configuration.

    Je suppose que c'est pour plaire à ceux qui préfèrent les "scripts" aux "annotations".

    Citation Envoyé par Gugelhupf Voir le message
    C'est juste une impression ou il y a un puissant lobby qui se cache derrière Kotlin ?
    Pour faire simple, les dev Android ont été longtemps limités sur les versions de Java (langage et API) utilisables. Kotlin étant retrocompatible jusqu'à Java 6 cela a permis aux dev Android d'avoir accès à un langage moderne. Pour ceux qui ont de l'expérience avec Groovy, les langages sont très proches. Cependant Kotlin compile et est typé, ce qui permet d'être beaucoup plus productif.

    Enfin dernier point, JetBrains oblige le tooling a très bien suivis. Il est même possible de l'utiliser en remplacement de Groovy pour Gradle.

    Dans le cadre spécifiquement de Spring, Sébastien Deleuze (notamment) a milité pour un support "natif" dans Spring. Il faut avouer que le concept de "extension function" sont vraiment pas mal pour faciliter de l'intégration d'un framework tel que Spring et tous les autres librairies avec lesquelles il est susceptible de travailler.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2015, 14h52
  2. Réponses: 0
    Dernier message: 26/03/2015, 19h11
  3. Problème création projet Spring Boot
    Par Copainbig dans le forum Spring
    Réponses: 0
    Dernier message: 01/01/2015, 21h48
  4. Réponses: 7
    Dernier message: 26/03/2014, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo