Le Framework Spring est en train d'ajouter le support pour HATEOAS (Hypermedia As The Engine Of Application State) qui permet de supporter des web services REST via des liens hypertextes. L'objectif principal de spring-hateoas est de proposer une API simplifiant la création de liens hypermedia et de créer des représentations de ressources REST quand ils sont utilisés avec Spring et plus particulièrement avec Spring MVC.
XML et JSON
La bibliothèque met à disposition un ensemble de types pour faciliter l'utilisation de XML et JSON.
Liens
Elle fournie également plusieurs classes pour gérer les liens et les relations.
La classe Link sert à créer et porter des liens basés sur la définition donnée par le standard Atom). Elle utilise les attributs rel et href pour gérer la relation et décrire le lien réel. Dans le cas du XML, la représentation du lien se fera dans le namespace Atom.
Un problème courant lors de la création d'URI est la multiplication des constantes dans l'application. Pour remédier à cela, la classe ControllerLinkBuilder extrait l'URI racine de la requête et y ajoute le mapping définit par le Controller pour la ressource correspondante pour obtenir l'URI complète.
Lorsque les ressources sont des représentations directes des classes du modèle, des classes sont fournies par Spring pour créer des liens pour ces types du modèle, pointant soit vers une collection de ressources soit vers une ressource simple.
Trouver le lien correspondant à une relation donnée est une tâche récurrente lorsqu'on utilise hypermerdia et Spring-hateoas propose pour cela d'utiliser la classe LinkDiscoverer.
Ressources
La bibliothèque contient également une classe dédiée à la création de ressources : ResourceSupport, dont il faut hériter pour avoir le support des liens. Pour réduire la quantité de code à produire pour le mapping entités-ressources et l'ajout de liens vers une ressource, une autre classe peut être utilisée : ResourceAssemblerSupport. Cet assembleur peut aussi bien créer une ressource simple qu'une collection de ressources.
Geraint Jones a écrit un article à ce sujet qui utilise spring-hateoas sur un scenario simple.
Lors de la JAX 2013, Martin Lippert a donné la présentation "Modern Architectures with Spring and JavaScript" qui montrait une utilisation de cette bibliothèque.
Spring HATEOAS est actuellement en version 0.5 et le travail pour la 0.6 a déjà commencé.