Le Framework Spring 5.0 est version majeure construite autour de Java 8 et 9. Elle est axée sur des APIs de programmation fonctionnelles et les architectures réactives qui permettent de réaliser des application Non Blocant.

plus de 4 an(s)

Description

Le Framework Spring 5.0 est version majeur construite autour de JDK 8 et 9.   

Elle axé sur des APIs de programmation fonctionnelles et les architectures réactives.  

D'importantes mises à jour ont été apportées à cette version afin de profiter pleinement des fonctionnalités de :  

  • Java SE 8 +, Java EE 7+  
  • JDK 8, Servlet 3.1, Bean Validation 1.1, JPA 2.1, JMS 2.0  
  • Support de JUnit 5 (et JUnit 4.12)  
  •  @SpringJUnitConfig : équivalent à @ExtendWith(SpringExtension.class)et @ContextConfiguration  
  •  @SpringJUnitWebConfig , @SpringJUnitConfig, @WebAppConfiguration  

  

 Et de manière générale l'intégration avancée avec les APIs Java EE 8  

  • Servlet 4.0, Bean Validation 2.0, JPA 2.2, JSON Binding API 1.0 (équivalent à GSON or Jackson)  

  • Erg Tomcat 9.0, Hibernate Validator 6.0, Apache Johnson 1.1  

  

Programmation fonctionnelle ou annotations ?  

Si la version Spring 4.3, a introduit la création de Bean par annotation  qui permet    

  • Faible couplage entre composants  
  • La possibilité de créer de Endpoint facilement.  

 Spring 5 quant à lui apporte la programmation fonctionnelle comme alternative. C.-à-d.   

  • La Possibilité de créer et d'enregistrer de nouveau Bean via la programmation.  
  • Pas besoin d'annotations ni de scan de classpath, on peut même éviter la réflexion de la création de Bean  
  • Non-nul API design avec une annotation @Nullable  (pour les dépendances null)  

Spring est naturellement Java 8 et 9 :  

Même si Spring 4 supportait certaines fonctionnalités de Java 8, il faut savoir qu'elle est basée sur Java 6. Pendant l'exécution Spring4 permet de supporter les fonctionnalités de Java 8.  La version Spring 5 supporte nativement et profite pleinement des fonctionnalités de Java 8 et 9.  

En résumé :  

  • Le code du Framework a été modifié pour profiter des améliorations de la Réflexion apporté dans Java 8  
  • Alignement avec les conventions Java 8, avec l'utilisation des callbacks via des interfaces fonctionnelles, l'utilisation des expressions Lambda et des Stream.  
  • L'utilisation des méthodes par défaut dans les interfaces  
  • La répétions d'annotations (qui été ignoré par Java 6 & 7)  
  • Gestion explicite de la notion de Nullability (@nullable) pour gérer les dépendances nul    

La programmation Réactive :  

L'une des plus importantes fonctionnalités de Spring 5 est la programmation Réactive, qui consiste à créer des applications qui réagissent à des évènements en l'occurrence Non Bloquant. L'introduction du Project Reactor qui est l'implémentation java des Streams Reactive développé par Spring Pivotal Team permet de développer des applications web fonctionnelles (sprint-web-reactive)  

  

Une Framework WEB fonctionnelle.  

Créer des applications web fonctionnelles en utilisation les fonctionnalités Reactive, c’est la possibilité des créer des Endpoints (Uri) à travers la programmation fonctionnelle, notamment grâce au composants  

  • HandlerFunction  

  • et RouterFunction.  

HandlerFunction : est une fonction qui gérer les requêtes entrantes et renvoi une réponse.  

RouterFunction : est une alternative à l’annotation @RequestMapping, il est utilisé pour router les requêtes entrantes vers les fonctions   

Exemple  :  

 RouterFunction<String> route =  
    route(GET("/hello-world"),  
    request -> Response.ok().body(fromObject("Hello World")));

  

Support de Kotlin nativement :  

Kotlin est un langage de programmation orientée objet supporté par la JVM.  

L'extension Kotlin de Spring 5 permet d'avoir un code encore plus concis.  

Exemple création de Controller Kotlin     

   
     ("/api" and accept(TEXT_HTML)).nest { 
         GET("/", fooHandler::findAllView)  
         GET("/{segment", fooHandler::findOneView)   
      }  
     ("/api/sample" and accept(APPLICATION_JSON)).nest   
      GET("/", this@barHandler::findAll)  
      GET("/{id", this@barHandler::findOne)  
      }  
}  

Support minimum des serveurs :    

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

Fonctionnalité NON Supportées :  

Certaines fonctionnalités ne sont plus supportées avec Spring 5, à savoir :   

  • Portet  
  • Velocity  
  • JasperReports  
  • XMLBeans  
  • JDO  
  • Guava