Blog des Gens Compliqués

OK... Spring Boot c'est vraiment cool

22/05/2018 15:10:57+02:00|Par DkVZ
2 minutes de lecture (facile)

Il y a quelques jours je radotais sur le choix d'une technologie backend et j'expliquais à quel point Spring Boot avait l'air prometteur.

EH BEN C'ETAIT VRAI

Après la mise en pratique et la "re-création" du service REST foireux de ce blog, je peux le dire... C'est extrêmement simple.

  • Il ne faut pas déclarer de classe contrôleur, ça se fait tout seul selon les annotations.
  • Je voulais utiliser directement JDBC, il y a un wrapper Spring appelé JdbcTemplate qui s'occupe pour vous de libérer les ressources et remplir des lists et des maps et des lists de maps (mon rêve).
  • En mode "Rest", on peut:
    • Retourner directement des objets (des entités par ex.), ils sont auto-transformés en JSON par la MAGIE DU DIABBB'
    • Si ça fait peur, on peut toujours retourner une bonne vieille Map ou une List<Map<>>
    • Une annotation permet de transformer immédiatement un corps de requête (POST ou PUT) au format JSON en un objet Java. Comme ça, hop. Il le fait.
  • Envoyer des données à un template est ultra-simple, et ce pour 3 moteurs de templates supportés!
  • Créer un .jar déployable immédiatement avec Tomcat intégré se fait proprement avec une seule commande Maven. le fichier de config rassemble toutes les options à un seul endroit bien pratique.
  • C'est extrêmement simple de créer un nouveau projet, et pas juste grâce à Maven, ils fournissent également un Eclipse modifié appelé Spring Tool Suite qui est parfait pour le développement rapide.

Et il y a d'autres trucs magiques. Par ex. mes commentaires sont envoyés en www-urlencoded via une requête POST, alors que la manière "normale" de faire serait avec un corps en JSON.

Je pensais que ça allait être l'enfer, mais en fait il suffit d'ajouter un argument "consumes" à mon annotation RequestMapping au niveau du contrôleur, et les éléments postés en form-url-encoded sont automatiquement assignés aux variables de la méthode contrôleur. Comme ça, hop.

@RequestMapping(value="/comments", method=RequestMethod.POST, consumes=MediaType.APPLICATION_FORM_URLENCODED_VALUE)

Autre truc embêtant, j'ai un endpoint (https://api.dkvz.eu/gimme-sitemap) qui vomit du XML balancé comme du texte (je ne travaille pas avec un parseur).

Juste retourner le texte XML ne fonctionne pas parce que Spring Boot l'entoure de tags html et place le texte dans l'élément body.

De nouveau, pour changer le content-type et envoyer la bonne réponse il suffit d'ajouter un argument dans @RequestMapping, c'est magique:

@RequestMapping(value="/gimme-sitemap", produces="application/xml")

Et là je ne travaille pas avec un ORM parce que je suis pas normal comme personne, mais d'après ce que j'ai vu, c'est tellement simple d'utiliser un ORM et faire du CRUD avec Spring Boot que je pense peut-être carrément m'y mettre, alors que normalement je préférerais devenir vegan que d'utiliser à nouveau une horreur du genre Hibernate.

Et je pense que par défaut, c'est Hibernate sous le capot de Spring JPA. C'est dire à quel point c'est bien fait.

Si mon Github indique que "je l'ai fait en regardant Naruto" (en japonais sous-titré, hein) c'est que c'est vraiment intuitif.

Commentaires

Il faut JavaScript activé pour écrire des commentaires ici

Ajouter un commentaire

Votre commentaire a été ajouté
(enfin, je pense)